XML 格式化工具
对 XML 进行格式化、压缩,并即时检查标签是否闭合正确(良构性)。也适合用来查看 SOAP/REST 接口响应或 RSS/Atom 订阅源。
什么是 XML 格式化工具
XML 格式化工具可以把挤在一行、没有换行的 XML,或缩进混乱的 XML,重新整理成带有清晰缩进的可读结构。它也能反过来操作:去除标签之间的空白与换行,将内容压缩为一行(压缩模式),两种模式可以用一个开关随时切换。缩进可以选择 2 个空格、4 个空格或制表符,方便与项目现有的代码规范保持一致。
输入的同时,工具还会即时判断开始标签与结束标签是否一一对应、嵌套关系是否完整,也就是是否"良构(Well-formed)"。一旦发现问题,会显示"XML 无效"提示,并在下方列出每处错误所在的具体行号,无需逐行肉眼排查。所有处理都在浏览器内通过 JavaScript 完成,粘贴的 XML 不会发送到 toolbase.cc 的服务器。
XML 格式化工具的使用方法
- 粘贴 XML 将 XML 粘贴到左侧输入框。如果手头没有可用的数据,可以点击"示例"按钮加载一段 RSS 订阅源示例。
- 选择缩进宽度 可选择 2 个空格、4 个空格或制表符。与现有文件的规范保持一致,方便直接粘贴回原处。
- 查看格式化结果与状态标签 右侧输出框会显示格式化结果,同时切换"格式良好(Well-formed)"或"XML 无效"标签。若无效,下方会列出带行号的错误清单。
- 按需切换到压缩模式 开启"压缩模式"后,输出框会显示去除标签间空白后的单行压缩结果。
- 选择复制格式化结果或压缩结果 点击"复制格式化结果"或"复制压缩结果",即可将对应内容复制到剪贴板。
用好本工具的小技巧
- 您输入的所有内容都完全在浏览器内通过 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)如今也被广泛使用。
常见问题
<、&。<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)整形工具组合。