比较两个xml文件

时间:2012-06-12 10:30:31

标签: xml linux

我有两个大的xml文件。每个差不多1.4 MB。 我想比较它们并看到不同的部分。我正在使用 linux 。有没有可以为我做这个的免费工具?还是其他任何技术?

我在linux中使用了“diff”命令并试图将结果输出到另一个文件中。 (diff file1.xml file2.xml> result.xml)但结果文件显示“无法解析xml”。然而它在屏幕上显示了一些东西如果可能的话,我希望将不同的部分存储在某个地方。 (或至少我应该能够正确看到它)

由于

拉吉尼

4 个答案:

答案 0 :(得分:3)

“无法解析xml”只能是diff的输出,如果这是差异。 要进行更直观的比较(取决于xml的格式化方式 - 右对齐等),您可以使用例如vimdiff

编辑:正如评论中所建议的那样,meld非常好。

如果文件比较杂乱,我建议您使用简单的XML Parser。并且按标签分析标签,孩子的孩子......

编辑:一个小的谷歌搜索向我展示,有一些实现。这可能是您搜索的内容 - xmldiff - http://www.logilab.org/859

答案 1 :(得分:1)

最快的解决方案是

  1. 使用xmllint --format整理文件
  2. diff
  3. 进行比较

答案 2 :(得分:0)

lo@lo:~/temp$  ls -al
total 28
drwxrwxr-x  3 lo lo  4096  Jun 12 21:45 .
drwxr-xr-x 88 lo lo 12288  Jun 12 21:45 ..
-rw-rw-r--  1 lo lo  1073  Jun 12 21:45 atom2.xml
-rw-rw-r--  1 lo lo   956  Jun 12 21:43 atom.xml
drwxrwxr-x  3 lo lo  4096  Jun  9 16:56 _posts
lo@lo:~/temp$ diff atom.xml atom2.xml > atom3.xml
lo@lo:~/temp$ cat atom3.xml 
4a5,7
> <?xml version="1.0" encoding="utf-8"?>
> <?xml version="1.0" encoding="utf-8"?>
> <?xml version="1.0" encoding="utf-8"?>
lo@lo:~/temp$ 

我尝试diff两个*.xml并输出到atom3.xml。正如你在上面所看到的,似乎一切都很好。

答案 3 :(得分:0)

您可以尝试Pretty Diff。它是用JavaScript编写的,所以它可以在任何有JavaScript解析器的地方运行。如果安装了类似Node.js的东西,它可以作为Linux中命令行的自动服务运行。 prettydiff.js组件被设置为用作Common.js模块,Node.js将其用于其API。它以这种方式运作:

1)它缩小了两个代码示例,以便删除所有注释节点。

2)它美化了两个代码示例,以便对空格和缩进进行规范化。

3)它运行diff算法。

diff算法查找不匹配的行,然后确定这些差异是否归因于第二个代码源中的行插入,从第一个代码源删除行或更改为匹配的行。遇到更改时,不同的diff算法会使用自定义模糊字符串匹配算法查找每个字符的差异。

输出是HTML格式的报告。有关示例,请参阅samples page