XML 压缩工具
XML 格式化工具 的预设方案
通过去除元素之间的空白,把 XML 压缩成一行。适合把文档嵌入请求体或配置值,这些场合下缩进只是多余的负担。
- 文件永不离开你的设备
- 免费,无需注册
- 无水印
- 加载后可离线使用
如何XML 格式化工具
- 1
粘贴你的 XML
一份压缩过的 feed、一份配置文件、一个 SOAP 响应——什么都可以。
- 2
格式化或压缩
为了阅读而缩进,或者为了传输而压缩。
- 3
检查错误
不匹配和未闭合的标签会被明确指出。
压缩后的 XML 实际会用在哪里
XML 出现在不少传输体积比人类可读性更重要的场合——服务之间反复发送的 SOAP 请求体、存储在有长度限制的环境变量里的配置值、被自动化客户端频繁抓取的 feed。去除元素之间的空白,同时小心保留 CDATA 区块、注释和属性值的原样内容,能去掉格式化带来的开销,而不触碰这些特殊区块刻意保护的任何数据——这和这个解析器在反方向做格式化时提供的安全保证是一样的。
压缩不会触碰数据,只会触碰格式
和这个格式化工具的解析保证一样,这里的压缩永远只去除元素标签之间的空白——它不会重新排列元素、不会重写属性值,也不会改变任何一个解析这份 XML 的程序实际会读取的内容。用这种方式压缩后的文档,和为可读性而格式化的文档,对任何以编程方式消费它的东西来说,代表的是完全相同的数据;不同的只是字节大小和人类可读性。
元素内部的空白会被保留,而不只是外部的
两个兄弟元素之间的空白——纯粹为了方便人类阅读而存在的缩进——会被去除。而直接存在于一个承载文本的元素内部、作为实际内容的空白,比如存储为元素文本的一句话里刻意留出的一个空格,则会被保留而不是剥离,因为 XML 没有像 HTML 那样普遍适用的规则,认定元素内容里的空白是无关紧要的。正确处理这个区别,正是一个专门构建的解析器能做对、而一个"直接去掉所有空白"的笼统方案会破坏真实文本内容的原因所在。
常见问题
它会校验我的 XML 吗?
它会检查标签是否配对、是否正确嵌套,并在出问题时指出具体是哪个标签。它不会对照 DTD 或 XSD schema 做校验——那需要 schema 文件本身,是另一项工作。
CDATA 区块和注释会被保留吗?
会被原样精确保留。扫描器会在寻找标签之前,先识别出 `<![CDATA[…]]>`、注释、处理指令和 DOCTYPE 声明,所以它们内部的标记永远不会被误认为是结构——而这正是基于正则表达式的格式化工具容易破坏文件的地方。
包含 < 或 > 的属性怎么处理?
能正确处理。扫描器在读取一个标签时会跟踪引号状态,所以像 `note="a > b"` 这样的属性不会让标签提前结束。这是简单格式化工具的一个常见故障。
能用它处理 HTML 吗?
对于严格的 XHTML 可以。真实世界的 HTML 有像 `<br>`、`<img>` 这样永远不闭合的空元素,还有可以省略的闭合标签,所以处理 HTML 应该用专门的 HTML 格式化工具——它使用真正的 HTML 解析器。