XML格式化与校验

美化或压缩XML,并检查其是否格式良好。适用于SOAP、RSS、站点地图和配置文件。

100% 在浏览器中运行。粘贴的内容不会被上传或存储。
XML输入
结果
就绪。

如何使用XML格式化工具

  1. 把 XML 粘贴到输入框中:可以是 SOAP 信封、RSS 订阅源、网站地图、SVG 文件或配置文件。
  2. 点击格式化进行美化输出,每个元素占一行,缩进保持一致。
  3. 点击压缩去掉标签之间的空白,生成最紧凑的版本。
  4. 如果文档格式不良,检查器会报告出了什么问题以及出错位置,方便直接跳到问题所在。
  5. 把结果复制到编辑器或请求中。

解析在浏览器本地进行。粘贴的 XML 不会被上传或保存,因此可以放心处理内部 API 载荷和配置。

什么是XML,为什么要格式化?

XML(可扩展标记语言)是 W3C 标准,用带有可选属性的嵌套命名元素来表示结构化数据。它至今无处不在:SOAP 网络服务、RSS 和 Atom 订阅源、XML 网站地图、Microsoft Office 文件、Android 布局、Maven 的 pom.xml 文件以及 SVG 图形,全都是 XML。

软件生成的 XML 常常写在一行里,或者缩进不规则。美化输出能让层级结构一目了然,便于看清哪个元素属于哪个父元素,并发现放错位置的值。需要把 XML 嵌入另一个载荷或减小其体积时,压缩就很有用。

格式良好与有效的XML

这两个术语经常被混淆:

  • 格式良好的 XML 遵循 XML 规范的语法规则:只有一个根元素、标签正确嵌套并闭合、属性值带引号、特殊字符已转义。每个 XML 解析器都要求满足这一点。
  • 有效的 XML 是格式良好的,并且符合某个模式(DTD、XSD 或 RELAX NG),该模式定义了允许使用哪些元素和属性。

本工具检查的是格式是否良好。模式校验需要模式文件,通常在构建工具或 IDE 中完成。

常见的XML错误及修复方法

多于一个根元素。XML 文档必须恰好有一个顶层元素:

<item>A</item>
<item>B</item>

把这些同级元素包在一个父元素里:

<items>
  <item>A</item>
  <item>B</item>
</items>

标签不匹配或嵌套不当。标签必须按相反的顺序闭合,名称区分大小写,因此 <Name>…</name> 是错误的,<b><i>text</b></i> 也是错误的。

未转义的特殊字符。文本中单独出现的 < 或 & 会导致解析失败。请使用预定义的实体:

字符实体何时必须使用
<&lt;在文本和属性值中始终必须
&&amp;在文本和属性值中始终必须
>&gt;建议使用;在序列 ]]> 中必须使用
"&quot;在双引号括起的属性值中
'&apos;在单引号括起的属性值中

例如,网站地图中的 URL 必须写成 <loc>https://example.com/?a=1&amp;b=2</loc>。或者,把大段文本包在 <![CDATA[ … ]]> 区段中,其中的标记字符不会被解释。

未加引号的属性。与 HTML 不同,XML 要求每个属性值都加引号:应写 <user id="42">,而不是 <user id=42>。

XML 声明之前有内容。如果存在 <?xml version="1.0" encoding="UTF-8"?>,它必须是文件中的第一样东西。即使前面只有一个空格或空行,文档也会变得格式不良。

提示与最佳实践

  • 声明编码并把文件保存为 UTF-8,以避免带重音符号的字符出现问题。
  • 对空白有意义的文档(例如混合内容或使用 xml:space="preserve" 的元素)进行美化输出时要小心;添加换行可能会改变文本的值。
  • 一致地使用命名空间:像 soap: 这样的前缀必须通过该元素或其祖先元素上的 xmlns:soap 属性来声明。
  • 需要把 XML 嵌入 URL 或 JSON 字符串吗?请先用 URL编码与解码或 Base64编码与解码对它进行编码。
提示:网站地图也是 XML。确认网站地图格式良好之后,请用 SEO检测检查您的网站。

常见问题

HTML 和 XML 一样吗?

不一样。HTML 更宽容:它允许像 <br> 这样不闭合的元素、不加引号的属性以及不区分大小写的标签名。XHTML 是遵循 XML 规则的 HTML 变体。要整理普通网页,请改用 HTML格式化。

格式化会改变我的数据吗?

美化输出会在元素之间添加空白,而压缩会去掉空白。元素名称、属性和文本内容保持不变,但在文本内部的空白有意义的文档中,多出来的缩进可能会产生影响。

这个工具会按 XSD 模式进行校验吗?

不会。它只检查文档是否格式良好。按 DTD 或 XSD 校验需要模式文件和支持校验的解析器。

为什么我的 XML 在 & 符号处出错?

在 XML 中,& 始终表示一个实体引用的开始。单独出现的 & 符号(在 URL 和公司名称中很常见)必须写成 &amp;,或者放进 CDATA 区段中。

更新于

已复制到剪贴板