如何区分两个XML文件?

Modified on: Sun, 13 Jan 2019 07:00:03 +0800

在Linux上,我如何在两个XML文件之间生成差异?

理想情况下,我希望能够将其配置为严格的某些内容,或者放松一些内容,例如空格或属性顺序。

我经常关心文件在功能上是相同的,但是它本身就是diff,使用起来很烦人,特别是如果XML文件没有很多换行符。

例如,以下内容对我来说应该没问题:

<tag att1="one" att2="two">
  content
</tag>

<tag att2="two" att1="one">
  content
</tag>
作者:slhck,qedi

最佳答案

一种方法是首先将两个XML文件转换为Canonical XML,然后比较结果使用diff。例如,xmllint可用于规范化XML。

$ xmllint --c14n one.xml > 1.xml
$ xmllint --c14n two.xml > 2.xml
$ diff 1.xml 2.xml

或作为单行。

$ diff <(xmllint --c14n one.xml) <(xmllint --c14n two.xml)

相关问答

添加新评论