如何对比两个 XML 文件
- 在左侧粘贴或拖入原始 XML,在右侧粘贴或拖入修改后的 XML。结果会随输入实时更新。
- 选择要忽略的内容:文本中的空白、注释或属性顺序。开启隐藏未更改的行,长文档也能一目了然。
- 先查看新增、删除和修改行数的汇总,再逐一浏览并排视图。左右互换可以反转对比方向。
XML 对比会忽略哪些差异
| 差异 | 是否忽略 |
|---|---|
| 元素之间的缩进和换行 | 始终忽略 |
| 属性值使用单引号还是双引号 | 始终忽略 |
<a/> 还是 <a></a> | 始终忽略 |
| 文本内部多余的空格和换行 | 开启忽略文本中的空白时(默认开启) |
| 注释 | 开启忽略注释时 |
| 属性顺序 | 开启忽略属性顺序时(默认开启) |
| 元素顺序 | 从不忽略——移动过的元素会显示为一处删除、一处新增 |
命名空间前缀、& 与 &、CDATA 与转义文本 | 从不忽略——按原样逐字比较 |
XML 对比的原理
两个文档会先被解析,按所选选项进行规范化,再统一以两个空格缩进输出。然后用 Myers diff 算法(git diff 默认使用的算法)逐行比较。被替换的行会配对显示为修改行,大段未更改的行可以折叠起来。由于结果基于格式化后的版本,行号可能与原始文件不同。
常见问题
元素的顺序会影响对比结果吗?
会。XML 中的元素是有顺序的,所以移动过的元素会显示为在一处被删除、在另一处被新增。只有属性顺序可以忽略,因为它在 XML 中没有任何意义。
两个文件看起来一样,为什么显示有差异?
请检查选项:如果关闭了相应选项,注释、属性顺序和文本内的空白都会被算作差异。命名空间前缀以及 & 和 & 这类实体写法,也会按原样逐字比较。
格式有误的 XML 也能对比吗?
不能。两个文档都必须先能被解析。如果其中一个有错误,会在对应一侧下方显示出错的行和列——可以直接在那里修正,也可以用 XML 校验工具修正。
我的数据会被上传吗?
不会。对比完全在你的浏览器中进行,不会向服务器发送任何数据。