XML 格式化工具

对 XML 进行格式化、压缩,并即时检查标签是否闭合正确(良构性)。也适合用来查看 SOAP/REST 接口响应或 RSS/Atom 订阅源。

什么是 XML 格式化工具

XML 格式化工具可以把挤在一行、没有换行的 XML,或缩进混乱的 XML,重新整理成带有清晰缩进的可读结构。它也能反过来操作:去除标签之间的空白与换行,将内容压缩为一行(压缩模式),两种模式可以用一个开关随时切换。缩进可以选择 2 个空格、4 个空格或制表符,方便与项目现有的代码规范保持一致。

输入的同时,工具还会即时判断开始标签与结束标签是否一一对应、嵌套关系是否完整,也就是是否"良构(Well-formed)"。一旦发现问题,会显示"XML 无效"提示,并在下方列出每处错误所在的具体行号,无需逐行肉眼排查。所有处理都在浏览器内通过 JavaScript 完成,粘贴的 XML 不会发送到 toolbase.cc 的服务器。

XML 格式化工具的使用方法

  1. 粘贴 XML 将 XML 粘贴到左侧输入框。如果手头没有可用的数据,可以点击"示例"按钮加载一段 RSS 订阅源示例。
  2. 选择缩进宽度 可选择 2 个空格、4 个空格或制表符。与现有文件的规范保持一致,方便直接粘贴回原处。
  3. 查看格式化结果与状态标签 右侧输出框会显示格式化结果,同时切换"格式良好(Well-formed)"或"XML 无效"标签。若无效,下方会列出带行号的错误清单。
  4. 按需切换到压缩模式 开启"压缩模式"后,输出框会显示去除标签间空白后的单行压缩结果。
  5. 选择复制格式化结果或压缩结果 点击"复制格式化结果"或"复制压缩结果",即可将对应内容复制到剪贴板。

用好本工具的小技巧

  • 您输入的所有内容都完全在浏览器内通过 JavaScript 处理,不会发送到 toolbase.cc 的服务器,因此可以放心用来格式化包含敏感信息的内部配置文件或接口响应。
  • 开启压缩模式后,标签之间的换行与缩进空白都会被去除,便于嵌入配置文件或压缩 HTTP 请求体。
  • 如果结果显示"XML 无效",通常是因为存在未闭合的标签或开始/结束标签名称不一致。可根据错误列表中显示的行号定位问题所在。
  • 本工具与 JSON、SQL 格式化工具采用相同的实现思路。如果您的接口同时返回 JSON 和 XML,配合 JSON 格式化工具 使用能提升调试效率。
  • 标签匹配同时考虑命名空间前缀(例如 <soap:Envelope>),因此也适合用来调试 SOAP 消息。

XML 格式化工具的应用场景

查看 SOAP/REST 接口响应

当 SOAP 或 REST 接口返回的 XML 挤在一行时,格式化后就能一眼看清元素的嵌套关系与命名空间前缀,便于开发过程中的调试。

阅读 RSS/Atom 订阅源

将博客或新闻网站发布的 RSS/Atom 订阅源格式化,即可以易读的方式查看 item 元素的排列顺序与各字段的值。

排查配置文件与构建定义中的语法错误

当 Android 布局 XML 或 Maven 的 pom.xml 无法正常加载时,粘贴进来校验即可当场定位未闭合的标签。

压缩以减少传输体积

如果把带缩进的 XML 直接作为接口响应或静态文件对外提供,缩进空白会额外增加传输体积。面向实际访问者的场景请使用压缩后的版本。

转换为其他格式前的预处理

先确认文档是良构的,再交给 XML 转 JSON 等转换工具,可以避免转换环节出现难以追溯根源的报错。

XML 相关术语表

元素(Element)
XML 文档的基本组成单位,由开始标签和结束标签(<item>...</item>)构成,或者是自闭合标签(<item />)。元素可以相互嵌套,整份文档在唯一的根元素下形成树状结构。
属性(Attribute)
写在开始标签内部、形如 name="value" 的附加信息。某项数据究竟应建模为子元素还是属性,属于设计层面的取舍,XML Schema 的设计指南对此有详细讨论。
良构(Well-formed)
指所有标签都正确开闭、嵌套关系没有交叉错乱的状态,是 XML 规范中的强制性要求。本工具的校验功能正是判断这一属性。它与表示是否符合某个模式(Schema)的"有效(Valid)"是不同的概念。
命名空间(Namespace)
以 xmlns:soap="..." 的形式声明,并通过带前缀的标签名(如 <soap:Envelope>)使用的机制。它让来自不同词汇表的 XML 能够在同一文档中共存而不产生命名冲突,在 SOAP 消息中被大量使用。
CDATA 区块
用 <![CDATA[ ... ]]> 包裹的一段内容,XML 解析器不会将其当作标签来解析。适合用来嵌入包含尖括号的 HTML 片段或源代码,而无需逐字符转义。
处理指令(Processing Instruction)
由 <? 与 ?> 包裹的一段说明,文档开头常见的 XML 声明 <?xml version="1.0"?> 就是典型例子,用于向解析器或应用程序传达指示信息。
DTD(文档类型定义)
用于定义 XML 文档可以包含哪些元素和属性的机制之一,通过 <!DOCTYPE ...> 声明。功能更强大的替代方案 XML Schema(XSD)如今也被广泛使用。

常见问题

指每个开始标签都有对应的结束标签,且元素的嵌套关系正确闭合、没有交叉重叠。"格式良好"是 XML 规范的强制性要求,不满足该条件的 XML 会导致解析器报错并拒绝加载。这与"有效(valid)"——即是否符合某个模式(DTD/XML Schema)——是不同的概念。

对于全新的 Web API,JSON 通常更轻量、更易于处理。但在SOAP 对接、RSS/Atom 订阅源、SVG 以及许多现有的企业系统等已将 XML 作为标准的领域,仍然需要使用 XML。实际选择应根据对接的生态系统来判断。

解析器会将其误认为标签的一部分,从而导致格式良好性错误。在属性值和文本节点中使用这些字符时,必须以实体引用的形式转义,例如 &lt;、&amp;。

不会。本工具的压缩功能只去除标签之间的空白与换行,不会更改注释或 CDATA 区块的内容。如果希望彻底删除注释,需要手动处理。

可以。像 <ns:tag> 这样带命名空间前缀的标签名,会连同前缀一起进行完全匹配来检查标签的对应关系,因此对于大量使用命名空间的 SOAP 消息等 XML 也能正确校验和格式化。
工具君

闲话 ― 作为 SGML 之子诞生的 XML

XML(可扩展标记语言)于 1998 年成为 W3C 推荐标准,其渊源可追溯到 1980 年代制定的庞大文档描述规范 SGML(标准通用标记语言)——XML 正是作为它的简化子集而设计出来的。HTML 同样是 SGML 的一种应用,因此 XML 与 HTML 可以说是"SGML 家族"的兄弟。

进入 2000 年代前期,以 SOAP 为代表,XML 迅速普及为 Web API 与企业间数据交换(EDI)的标准格式。它支持属性、命名空间,并可通过 XML Schema 进行严格的类型定义,这些特性正是当时企业级应用所看重的。

到了 2010 年代,主导地位被 JSON 取代,但 XML 并未因此消失。在需要丰富结构化文档表达能力的领域——如 RSS/Atom 订阅源、SVG 图像、Office 文档(docx/xlsx 的内部格式)以及 Android 布局文件——XML 至今仍是标准格式。

本工具是继 JSON 格式化工具、SQL 格式化工具之后的第三款格式化工具,与前两者一起构成了 Toolbase 面向开发者的三大主流数据格式(JSON、SQL、XML)整形工具组合。