对 XML 文件进行排序以便找到差异

对 XML 文件进行排序以便找到差异

我需要比较两个 XML 文件,每个文件大约有 13,000 行。

遗憾的是,生成这些文件的代码每次都不会按照相同的顺序生成数据(数据来自数据库)。

因此,当我使用标准的逐行比较实用程序 (WinMerge) 时,我得到的是误报,即使在规范化 XML 文件

作为我的问题的一个例子:

文件1:

<a>
  <b key="fruit.preferred">banana</b>
  <b key="fruit.available">pineapple</b>
  <b key="fruit.available">apple</b>
  <b key="fruit.available">orange</b>
</a>

文件2:

<a>
  <b key="fruit.available">pineapple</b>
  <b key="fruit.preferred">banana</b>
  <b key="fruit.available">apple</b>
  <b key="fruit.available">orange</b>
</a>

这些文件的内容相同,但是香蕉线的位置使得它们在传统 diff 中被视为不同。是否有任何工具可以执行排序以使文件被视为相同?

顺便说一句,XML 文件结构比上面的例子更复杂!

答案1

我认为您可以使用诸如 xmldiff 之类的工具来实现此目的。

http://diffxml.sourceforge.net/

工具网页上显示:

标准 Unix 工具 diff 和 patch 用于查找文本文件之间的差异并应用差异。这些工具逐行操作,使用经过充分研究的方法来计算最长公共子序列 (LCS)。

在分层结构数据(XML 等)上使用这些工具会导致次优结果,因为它们无法识别这些文件的基于树的结构。

相关内容