跳转到正文

XML 格式化与验证工具

粘贴 XML,即可按 2 个空格、4 个空格或制表符缩进,压缩成一行,或查明它为何无法解析。格式良好的 XML 会返回元素数、嵌套深度和大小;格式错误的 XML 则会返回解析器的提示信息。免费,无需注册,XML 永远不会离开您的浏览器。

模式

如何使用 XML 格式化工具

  1. 1. 选择模式。 格式化进行美化排版;压缩去除元素之间的空白。
  2. 2. 选择缩进。 选择“格式化”时,可在 2 个空格、4 个空格或制表符之间选择。
  3. 3. 粘贴 XML 并点击按钮。 结果会显示在下方,包含三项统计:元素数、最大深度(根元素为第 1 层)以及输出大小(字符数)。
  4. 4. 如有错误请修正。 如果 XML 不是格式良好的,则不会输出任何内容,您的浏览器解析器会报告它发现的问题。修正 XML 后再次点击按钮即可。

格式良好与有效

“验证” XML 可能指两件不同的事。如果文档遵循 W3C 的 XML 1.0 推荐标准 中的语法规则,它就是格式良好的;如果它还遵循 DTD 或 XSD 等模式,它就是有效的。本工具只检查格式良好性,使用您浏览器内置的 XML 解析器完成。它不读取 DTD 或模式,因此格式良好但不符合您应用需求的文档(例如缺少必需的元素)也会通过检查。它执行的规则如下:

规则何时出错
只有一个根元素存在两个顶层元素,或根元素之前有文本
元素正确嵌套<a><b></a></b>
每个起始标签都有对应的结束标签<a><b></a>,或用 <br> 代替 <br/>
名称区分大小写<Title>…</title>
属性值必须加引号<a id=1/>
同一元素上不能有重复的属性<a id="1" id="2"/>
文本中的 < 和 & 必须转义<a>5 < 6 & 7</a> 应写为 5 &lt; 6 &amp; 7

XML 只定义了五个预定义实体——&lt;、&gt;、&amp;、&apos; 和 &quot;——因此 &nbsp; 这样的 HTML 实体,除非由 DTD 声明,否则都是错误。对于未闭合的标签,提示信息是浏览器的措辞,且因浏览器而异,它会指出不匹配的标签对:在 Chrome 中,<a><b></a> 会在第 1 行第 11 列报告错误,信息为“Opening and ending tag mismatch: b line 1 and a”。

格式化工具会改动什么

本工具先把您的 XML 解析成一棵树,再把这棵树写回输出,因此输出的是等价的 XML,只是排版更整洁,而不是您原文的副本。您会注意到以下差异:

  • 保留声明与 DOCTYPE。 开头的 <?xml …?> 行以及 <!DOCTYPE …> 声明(包括内部子集)会按您输入的原样写回。
  • 属性 保持原有顺序,但会改写为双引号。
  • 实体被解析。 &apos; 和 &#169; 之类的字符引用会还原为字符本身;只有文本中的 &、< 和 >,以及属性中的 &quot;,会被重新转义。
  • 空元素自动闭合。 <a></a> 在没有内容时会变为 <a/>,但只含一个空格的元素会保持为 <a></a>。
  • 注释、CDATA 区段和处理指令 均会保留。

示例

这份单行文档包含一个声明、一个单引号属性、一条注释和一个空元素:

输入

<?xml version="1.0" encoding="UTF-8"?><library><book id='1'><title>APA Manual</title><year>2020</year><!-- note --></book><book id="2"/></library>

格式化,2 个空格

九行,共 172 个字符:声明在前,library 顶格,每个 book 缩进两个空格,而 title、year 和注释则缩进四个空格。第一本书的 id 现在写作 id="1"。

压缩

一行,共 146 个字符。

统计

5 个元素,最大深度为 3(library、book、title)。

压缩会保留声明,并把整棵树放在一行上,因此同一份文档从 172 个字符缩减为 146 个字符。输出大小卡片显示的就是这些字符数。

您需要哪个工具?

本页面针对 XML。对于 HTML(它能容忍未闭合的标签并保持行内间距),请使用 HTML Formatter。若要把 XML 转为 JSON 数据,计划中的 XML to JSON Converter 会展示属性和重复元素如何映射;至于 JSON 本身,请使用 JSON 格式化工具。

常见问题

XML 格式化工具是做什么的?
它会重新缩进 XML,使嵌套关系一目了然,通常每个元素占一行。本工具还会检查 XML 是否格式良好,因为它必须先解析文档,才能以新的排版把它写回。
这里的 XML 验证是如何工作的?
您浏览器内置的 XML 解析器会读取文本。如果 XML 违反了语法规则,将显示解析器的错误,且不产生任何输出。它只检查格式良好性,不会依据 DTD 或 XSD 模式进行验证。
注释、CDATA 区段和属性会被保留吗?
会:注释和 CDATA 区段会按原样写回,属性保持原有顺序,但引号会统一为双引号。DOCTYPE 声明会按您输入的样子写回。
压缩是做什么的?
它会去除元素之间的空白和换行,得到等价的最短文本,并在存在 XML 声明时予以保留。<title> 等元素内部的文本会保留其空格,与子元素并列的文本也是如此,例如带有一个加粗词语的段落。
为什么格式化会改变我的文本间距?
只有在格式化混合内容时才会发生,即与子元素并列的文本,例如带有加粗词语的段落。“格式化”会修剪这段文本并把每一部分放到单独一行,从而改变空白;“压缩”则会保留空白。数据型 XML(即元素要么包含文本、要么包含其他元素)不受影响。
为什么包含 &nbsp; 的 XML 会失败?
XML 只有五个预定义实体,而 &nbsp; 不在其中。请把它替换为数字引用 &#160;,或在 DTD 中声明该实体。
我的 XML 会被上传到服务器吗?
不会。解析和格式化都在您的浏览器中完成,您粘贴的内容不会被发送到任何地方。

相关工具

数据、标记语言与代码中的更多工具