XML 工具

美化或压缩 XML / HTML 片段并统计元素、属性与嵌套深度;另一页按结构对比两份 XML —— 属性顺序与缩进不算差异,每处差异带 XPath 定位。 格式化器不建 DOM,因此片段不完整也能排版;严格校验交给浏览器原生 DOMParser,两者结果分开展示。 全部在本地完成,数据不上传。

格式化说明

  • <name>值</name> 这种只含文本的元素会保持在同一行,避免把短标签拆成三行。
  • 注释、CDATA、处理指令 (<?xml …?>)与 DOCTYPE 都会原样保留, 属性里的 > 不会被误判为标签结束。
  • XML 严格区分大小写、属性必须带引号、标签必须闭合 —— 这些 HTML 允许的写法在 XML 里都会导致解析失败,校验框会指出位置。
  • 压缩会去掉标签间的空白,但保留文本节点内部的单个空格,避免改变可见内容。

对比口径

  • 属性按名字比较,与书写顺序无关 —— XML 规范里属性本来就是无序的,<a x="1" y="2"/> <a y="2" x="1"/> 视为相同。
  • 缩进与换行不算差异:文本节点的空白会先规范化。把一段文本包进 CDATA 也不算改动。
  • 子元素按位置比较,路径用 XPath 写法(/config/features/feature[2]), 下标只在同名兄弟里数。和 JSON 数组一样,中间插入一个节点会让它之后的同名节点全部报告为差异。
  • 同一位置标签名变了单独标为「类型变更」,并且不再往下逐个比 —— 标签都换了,下面的差异只是噪音。
  • 对比用的解析器是宽容的:没闭合的标签会自动闭上,多余的闭标签被忽略。 这是对比工具不是校验器,拿来比的往往正是有点问题的那一份; 要严格校验请用「格式化 / 校验」那一页。