XML 格式化 / 压缩
格式化美化或压缩 XML,规范化缩进、属性与自闭合标签。纯 XML 处理,不转换格式。
不获取远程 URL;请直接粘贴你的 JSON。
本页内容
什么是 XML 格式化?#
XML 格式化器重排一份“丢了结构”的文档——挤在一行的 SOAP 响应、被代理压掉了空白的 RSS feed、或者在一个不保留缩进的文本框里改出来的配置文件——把它重新缩进,让元素层级一目可见。反方向的压缩,则剥掉所有标签间空白,让文档在传输时尽量小。
XML 往返之所以比看上去难,是因为对 < 和 > 做“查找替换”会毁掉信息。元素顺序、<?xml?> 声明、注释、<?xml-stylesheet?> 这类处理指令、属性顺序、<a></a> 与 <a/> 的差别——这些都承载着意义。本页用的是 fast-xml-parser 的 preserve-order(保序) 模式,先把文档解析成一棵有序树,再忠实地重建——所以格式化产出的是“你的文档”的归一化视图,而不是被重排过的版本。这也是本工具与 JSON/XML 转换器的根本区别:它做的是纯 XML 到 XML 的往返,绝不改变数据格式。
怎么用#
- 把 XML 粘进左侧 Input 框。占位符给了一份最小的
<?xml?>文档作为起点,也可以点 Sample。 - 在工具栏选一个 Mode 按钮:
- Format —— 解析后带缩进和换行重建。空元素折叠成自闭合形式(
<a></a>变<a/>),属性保留,注释和声明都活着。 - Minify —— 解析后重建为单行紧凑形式,无标签间空白、无末尾换行。
- Format —— 解析后带缩进和换行重建。空元素折叠成自闭合形式(
- 在 Format 模式下,选 Indent(缩进):2、4 或 tab。
- 在右侧 Output 框查看。输出栏会显示字符数;Copy 复制;Clear 清空两边。
如果输入不是良构的——标签没闭合、有个本该写成 & 的孤立 &——状态栏会尽力报出错误所在的行和列,让你能定位问题,而不是对着空输出发呆。
主要特性#
- 忠实的往返。 保序解析让文档顺序、
<?xml?>声明、注释和处理指令都穿过格式化/压缩的循环保留下来。 - 两种模式共用同一个解析器。 Format 和 Minify 解析完全相同,只是 builder 输出文本的方式不同。所以一个能成,另一个也能成。
- 自闭合归一化。
<a></a>这类空元素折成<a/>,是规范的紧凑形式,也让 diff 时的空白差异更显眼。 - 值保持字符串。 解析器配置了
parseTagValue: false,所以文本节点true还是字符串"true"、007还是"007"——没有会让人在回程上吃惊的静默类型转换。 - 大输入走 Worker。 大于 1 MB 的文档会路由到 Web Worker 里解析,页面保持响应;小输入则直接内联处理。
- 完全在浏览器端。 解析器打包进本页,你的 XML 绝不离开浏览器。
实例演示#
一份挤在两行的小配置文档:
输入:
<?xml version="1.0"?><config><server host="example.com" port="443"/><feature name="cache"/><feature name="logs"></feature></config>
选 2 空格,点 Format:
<?xml version="1.0"?>
<config>
<server host="example.com" port="443"/>
<feature name="cache"/>
<feature name="logs"/>
</config>
两件事很显眼。<?xml version="1.0"?> 声明在文档顶部完整保留了下来。而且 <feature name="logs"></feature> 和本就自闭合的 <feature name="cache"/> 现在都显示为 <feature name="logs"/>——空元素被归一化成自闭合形式,所以形状相同的两个 feature 看起来终于一样了。再对原始输入点 Minify,得到传输形态:
<?xml version="1.0"?><config><server host="example.com" port="443"/><feature name="cache"/><feature name="logs"/></config>
每个字节的装饰性空白都没了,但 <server> 上的属性顺序原封不动,声明也还在。
常见问题#
这个工具和 JSON/XML 转换器有什么区别?#
本工具是 XML 进、XML 出——美化或压缩一份 XML 文档,还你 XML。本站的 JSON/XML 转换器是在两种格式之间翻译,把 XML 变成 JSON 对象树或反过来。想保持原格式、只是排版更好看,用本页;想真的换格式,用转换器。
格式化会保留我的注释吗?#
会。解析时注释被收进有序树,由 builder 重新输出,所以 <!-- note --> 在 Format 和 Minify 下都能活下来。<?xml-stylesheet?> 这类处理指令也保留。
为什么错误定位有时只是近似?#
底层解析器并不是每种失败模式都暴露字符位置,所以对某些错误,本页只能从解析器的报错信息里尽力抠出行列。漏闭合标签时通常很准;更生僻的解析失败可能退回到第 1 行。完整的错误信息永远会显示出来,一般足够帮你定位到祸首。
能处理很大的 XML 文件吗?#
能,上限是你浏览器的内存。超过 1 MB 的输入会在 Web Worker 里解析,UI 不会卡死。上百兆的文档,解析会明显耗时、占内存——这是个浏览器工具,不是流式服务器。