什么是 XML 格式化?
XML(Extensible Markup Language,可扩展标记语言)是 W3C 标准化的结构化文档与数据交换文本格式。格式化——也叫美化打印或 beautify——读入格式良好的 XML 源码并重新缩进,让每个元素、属性、注释、处理指令和 CDATA 节都便于扫读。解析得到的文档树完全保持不变,只有元素之间的空白发生变化。
XML 格式化是如何工作的?
你的输入完全在浏览器中处理,使用原生的 DOMParser 与 XMLSerializer API,再加上一个自定义的递归缩进器。主要步骤如下:
- 你的输入按字节从文本框读取——粘贴进去的每一个字节都只保存在本地内存中。
- 浏览器使用
new DOMParser().parseFromString(text, 'application/xml')解析它。如果输入不是格式良好的 XML,解析器会插入一个<parsererror>节点,其文本内容里携带引擎给出的行号与列号——这些信息会原样显示在错误条中。 - 解析成功后,自定义缩进器深度优先地遍历 DOM 树,把每个元素、属性集合、CDATA 节、注释和处理指令按当前深度各占一行输出。如果开启了相关选项,空元素会以自闭合形式呈现。
- 压缩模式则反转该流水线:
XMLSerializer().serializeToString(doc)输出单行形式,再用一条带护栏的正则去掉元素之间的空白,同时不影响 CDATA 块内或非空白文本节点中的内容。 - 结果写入只读文本框,错误条会被清空,下载按钮则将结果打包为可发送或附在工单上的
.xml文件。
为什么使用此工具美化 XML?
- 隐私:每一次解析、格式化与压缩都在你的浏览器中完成。XML 永远不会进入我们的服务器——没有上传、没有遥测、无需账户。
- 精准的错误:当输入不合规时,解析器会原样展示浏览器引擎自己报告的行号和列号,而不是猜测——和你在 DevTools 中看到的一致。
- 忠实往返:先格式化再压缩,你会得到与原文档字节等价的结果(仅受 XML 声明选项影响)——格式化不会重新归一命名空间,也不会改写属性顺序。
- 速度快:纯 DOMParser 加约 60 行的缩进器即可瞬间处理多 MB 的 SOAP 信封和 OOXML 片段,无需下载任何外部库。
XML 格式化有哪些常见应用?
XML 美化打印在 Web 发布、企业集成与数据归档中随处可见:
- RSS / Atom feed 检查:粘贴播客或新闻 feed 的内容,发布前确认 channel 元数据、item 顺序和命名空间前缀。
- SOAP 调试:把从 Wireshark 或 SOAP 客户端日志中复制的 envelope 格式化,让 Header、Body 和 Fault 一眼可见。
- Sitemap 审计:重新缩进从竞品或自家预发布抓来的 sitemap.xml,统计条目数并核对每个 URL 的 hreflang 备选。
XML 格式化示例长什么样?
把三个元素的 <feed><entry><title>Hello</title></entry></feed> 粘贴进来,选择 2 空格缩进并按下 格式化,得到的是一份四行文档,每个元素各占一行并按深度缩进。对同一输入切换到 Minify 即可重新折回原始字节串。任何格式良好的文档都能无损往返。
可以离线运行吗?
可以。格式化与压缩流水线是纯 DOMParser + XMLSerializer 加上一个极小的递归缩进器,全部在浏览器标签页内运行。任何内容都不会上传,没有 Service Worker 代理你的输入,格式化步骤本身不会发起任何网络请求。唯一对外流量是标准的页面资源(CSS、字体、统计脚本)——你的 XML 永远不会到达 Ultim8Soft。
格式化会改变文档吗?
不会发生语义变化。格式化只重写元素之间的空白。元素名、属性值、文本内容、CDATA 负载、注释和处理指令都按字节保留。命名空间声明与前缀完全沿用输入——格式化器不会重新归一或重排属性。除可选的 XML 声明开关外,输出与输入解析出的 DOM 树完全一致。
CDATA / 注释 / 处理指令如何处理?
三者都按当前缩进深度原样输出在各自一行上。CDATA 负载被包裹在 <![CDATA[…]]> 中,内部不进行任何重新缩进——规范规定 CDATA 内容是不透明的,因此格式化器从不触碰。注释使用 <!-- … -->,处理指令使用 <?target data?>。三类节点经历 格式化 → 压缩 → 格式化 的往返后内容完全保留。
格式化与压缩 XML 有什么区别?
格式化把空白展开,便于人眼阅读文档树;压缩则把空白剥掉,便于传输与存储。两者都作用在解析后的 DOM 上,而非原始字节串,因此对一份格式良好的文档执行 格式化 → 压缩 的往返,会得到与原始压缩形式字节等价的结果。需要阅读或 diff XML 时用格式化;需要通过计费的 API 网关传输或嵌入另一份文档时用压缩。
本 XML 格式化器使用与浏览器处理 AJAX XHR 响应和 SVG 文档相同的解析器,因此任何格式良好的 XML——RSS、Atom、SOAP、sitemap、OOXML、SVG——都能干净往返。在上方粘贴任意 XML,复制结果,或将其下载为 .xml。