[英]Comparing two xml files
我有两个大的xml文件。 每个差不多1.4 MB。 我想比较它们并看到不同的部分。 我正在使用linux 。 有没有可以为我做这个的免费工具? 还是其他任何技术?
我在linux中使用了“diff”命令,并试图将结果输出到另一个文件中。 (diff file1.xml file2.xml> result.xml)但结果文件显示“无法解析xml”。 然而它在屏幕上显示了一些东西 如果可能的话,我希望将不同的部分存储在某个地方。 (或至少我应该能够正确看到它)
谢谢
Ragini
“无法解析xml”只能是diff
的输出,如果这是差异。 要进行更直观的比较(取决于xml的格式化方式 - 右对齐等),您可以使用例如vimdiff
。
编辑:正如评论中所建议的,融合非常好。
如果文件比较杂乱,我建议你使用简单的XML Parser。 并按标签分析标签,儿童按标签...
编辑:一个小的谷歌搜索向我展示,有一些实现。 可能这就是你搜索的内容 - xmldiff
- http://www.logilab.org/859
最快的解决方案是
xmllint --format
文件xmllint --format
diff
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$
我试图将两个*.xml
diff
并输出到atom3.xml。 正如你上面所看到的,似乎一切都很好。
你可以试试Pretty Diff 。 它是用JavaScript编写的,所以它可以在任何有JavaScript解析器的地方运行。 如果安装了类似Node.js的东西,它可以作为Linux中命令行的自动服务运行。 prettydiff.js组件被设置为用作Common.js模块,Node.js将其用于其API。 它以这种方式运作:
1)它缩小两个代码样本以删除所有注释节点。
2)它美化了两个代码样本,以便对空格和缩进进行规范化。
3)它运行diff算法。
diff算法查找不匹配的行,然后确定这些差异是否归因于第二个代码源中的行插入,从第一个代码源删除行或更改为匹配的行。 当遇到更改时,使用自定义模糊字符串匹配算法,不同的diff算法会查找每个字符的差异。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.