我有两个大的xml文件。每个差不多1.4 MB。 我想比较它们并看到不同的部分。我正在使用 linux 。有没有可以为我做这个的免费工具?还是其他任何技术?
我在linux中使用了“diff”命令并试图将结果输出到另一个文件中。 (diff file1.xml file2.xml> result.xml)但结果文件显示“无法解析xml”。然而它在屏幕上显示了一些东西如果可能的话,我希望将不同的部分存储在某个地方。 (或至少我应该能够正确看到它)
由于
拉吉尼
答案 0 :(得分:3)
“无法解析xml”只能是diff
的输出,如果这是差异。
要进行更直观的比较(取决于xml的格式化方式 - 右对齐等),您可以使用例如vimdiff
。
编辑:正如评论中所建议的那样,meld非常好。
如果文件比较杂乱,我建议您使用简单的XML Parser。并且按标签分析标签,孩子的孩子......
编辑:一个小的谷歌搜索向我展示,有一些实现。这可能是您搜索的内容 - xmldiff
- http://www.logilab.org/859
答案 1 :(得分:1)
最快的解决方案是
xmllint --format
整理文件diff
答案 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。