繁体   English   中英

比较两个xml文件

[英]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

最快的解决方案是

  1. xmllint --format文件xmllint --format
  2. 将它与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算法会查找每个字符的差异。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM