工具
ZH

XML 文件在线对比

粘贴或拖入两个 XML 文档,即可查看改动之处。对比前两边会按同样的方式格式化,因此只会并排显示元素、属性和文本中真正的差异。

原始 XML

修改后的 XML

隐私保护:您的数据仅在浏览器中处理,绝不会被上传。

如何对比两个 XML 文件

  1. 在左侧粘贴或拖入原始 XML,在右侧粘贴或拖入修改后的 XML。结果会随输入实时更新。
  2. 选择要忽略的内容:文本中的空白、注释或属性顺序。开启隐藏未更改的行,长文档也能一目了然。
  3. 先查看新增、删除和修改行数的汇总,再逐一浏览并排视图。左右互换可以反转对比方向。

XML 对比会忽略哪些差异

差异是否忽略
元素之间的缩进和换行始终忽略
属性值使用单引号还是双引号始终忽略
<a/> 还是 <a></a>始终忽略
文本内部多余的空格和换行开启忽略文本中的空白时(默认开启)
注释开启忽略注释时
属性顺序开启忽略属性顺序时(默认开启)
元素顺序从不忽略——移动过的元素会显示为一处删除、一处新增
命名空间前缀、&amp; 与 &#38;、CDATA 与转义文本从不忽略——按原样逐字比较

XML 对比的原理

两个文档会先被解析,按所选选项进行规范化,再统一以两个空格缩进输出。然后用 Myers diff 算法(git diff 默认使用的算法)逐行比较。被替换的行会配对显示为修改行,大段未更改的行可以折叠起来。由于结果基于格式化后的版本,行号可能与原始文件不同。

常见问题

元素的顺序会影响对比结果吗?

会。XML 中的元素是有顺序的,所以移动过的元素会显示为在一处被删除、在另一处被新增。只有属性顺序可以忽略,因为它在 XML 中没有任何意义。

两个文件看起来一样,为什么显示有差异?

请检查选项:如果关闭了相应选项,注释、属性顺序和文本内的空白都会被算作差异。命名空间前缀以及 &amp; 和 &#38; 这类实体写法,也会按原样逐字比较。

格式有误的 XML 也能对比吗?

不能。两个文档都必须先能被解析。如果其中一个有错误,会在对应一侧下方显示出错的行和列——可以直接在那里修正,也可以用 XML 校验工具修正。

我的数据会被上传吗?

不会。对比完全在你的浏览器中进行,不会向服务器发送任何数据。