跳到正文

XML 格式化与校验

XML Formatter & Validator

整理 XML 缩进,并报出第一处结构不合法的行和列。

缩进一份 XML 文档——SOAP 信封、RSS 订阅源、SVG、`.xsd`——并顺便报告它是否格式良好。格式良好的意思是标签匹配、属性带引号、每个命名空间前缀都已声明;它不意味着文档满足你的 schema。

🔒 完全在你的浏览器里运行xmlformatvalidatexsd
缩进

XML 输入

拖入 XML 文件

在这个标签页里读取,不上传。

整理结果

格式良好。每个标签都闭合,每个属性都有引号,每个命名空间前缀都声明过。

元素

10

属性

8

深度

5

输入

361 B

输出

428 B

这里查的是文档是否 格式良好 ——标签成对、属性有引号、命名空间前缀已声明——并不拿 DTD 或 XSD 去校验。一个格式良好的元素,按你的 schema 看仍可能放错了地方,这里不会告诉你。同时含有文本和子元素的元素会留在一行:重新缩进会把空白塞进你的内容里。

怎么用

  1. 粘贴或拖入文档

    XML、SVG、XSD、RSS 和 Atom 都接受。统计行会随你输入统计元素、属性和嵌套深度。

  2. 设置缩进,或者压缩

    两个空格、四个,或一个制表符;或者在文档要走一条按字节计费的线路时切到「压缩」。

  3. 做对比时给属性排序

    XML 不赋予属性顺序任何含义,所以两份只在这一点上不同的文档会产生一堆噪音 diff。排序之后真正的差异才看得见。

  4. 有问题的话读问题列表

    错误和警告带行列号。文档仍然会尽可能地格式化,所以你可以从输出开始不对劲的地方找到毛病。

常见问题

它会按我的 XSD 或 DTD 校验吗?

不会。它只检查格式良好性。一个格式完全良好的元素仍然可能放错了位置、基数不对,或者对你的 schema 来说类型不对,这里没有任何东西会告诉你。

为什么有一个元素被留在了一行上?

因为它同时包含文本和子元素——`<note>Deliver <em>before</em> Friday</note>`。缩进它会往你的内容里插入空白,而在混合内容里空白就是内容。

能用它格式化 SVG 吗?

能——SVG 就是 XML,路径数据在属性里,所以从不会被重排。要编辑路径本身,SVG 路径工具才是对的页面。

它会展开 DTD 里的实体吗?

不会。只认识 XML 预定义的五个;在内部或外部 DTD 子集里声明的自定义实体按原样保留。解析外部实体意味着去抓取一个 URL,这个页面不做这件事。

可以从这些接进来

接下来

这些工具吃得下当前工具的产出,结果可以直接送过去。