如何比较10大XML文件?

时间:2011-01-27 09:42:22

标签: xml linux git compare

我有10个大的XML文件,有些文件与其他文件不同(它代表了流程步骤中的数据)。

如何比较自动

我知道我可以使用像WinMerge或眼睛这样的工具手动比较它们,但我不喜欢这种方法。

我希望它能在Windows机器上完成,但我安装了Cygwin

我想我可以某种方式使用 git diff 来做到这一点,但......怎么样?

4 个答案:

答案 0 :(得分:2)

如果您只想知道差异,最简单的(不是最快的!)将对它们进行哈希并比较结果。 md5sum yourfile * .xml并查看哪些条目相同。

以不同的方式比较它们会更有效,但我认为没有标准的工具 - 但是小程序会这样做。

Open all files to be compared
Loop over the character indices
    fetch character from each, compare
    remove from list those which are not identical / group those who have the same 

因此,就第一个区别而言,您可以缩小搜索范围,具体取决于您要执行的操作。默认情况下,计算校验和/哈希将对整个文件执行此操作;你写了关于文件。

我现在要使用md5sum(shasum,...)。

答案 1 :(得分:2)

您是否需要支持XML的比较,例如一个认识到属性顺序不重要的人?如果是这样,您可以通过解析它们并使用XPath或XQuery中的deep-equal()函数来比较文件。或者,您可以将文件转换为XML规范形式,然后按字节顺序比较规范化文件。

如果您需要分析差异,而不仅仅是一个布尔值告诉您它们不同,那么有一种名为DeltaXML的产品专门用于此。这不是免费的。

答案 2 :(得分:1)

如果您只想快速确定文件是否相同,您可以考虑使用散列算法 - 每个文件md5并比较生成的散列?

答案 3 :(得分:1)

比较两个文件的最简单方法是使用diff file1 file2。您可以添加-b-B选项以忽略空格和白线差异:diff -bB file1 file2。试试man diff

如果您想为大量文件执行此操作,请使用脚本。

如果您比较同一文件的两个版本,则

git diff是相关的。

MY2C