Json 用于无序比较2个XML的XML差异工具

Json 用于无序比较2个XML的XML差异工具,json,xml,diff,Json,Xml,Diff,我正在寻找一个diff工具,它允许我比较2个xml(或json)文件,忽略其元素的顺序 例如: <Node> <Child name="Alpha"/> <Child name="Beta"/> <Child name="Charlie"/> </Node> <Node> <Child name="Beta"/> <Child name="Charlie"/>

我正在寻找一个diff工具,它允许我比较2个xml(或json)文件,忽略其元素的顺序

例如:

<Node>
    <Child name="Alpha"/>
    <Child name="Beta"/>
    <Child name="Charlie"/>
</Node>

<Node>
    <Child name="Beta"/>
    <Child name="Charlie"/>
    <Child name="Alpha2"/>
</Node>

这两个节点元素应该被认为是相似的,所显示的唯一区别是节点1有一个子名称“Alpha”,在另一个节点中是“Alpha2”


StackOverflow有一个类似的解决方案,但8年前有人问过,这个解决方案不再有效。是否有更新的工具可用?

根据XML的大小,使用具有可调倾斜公差的diff工具-算法将寻找“相似”线的距离-以及接近度匹配

“天真”的差异使用超越比较4:

接近度匹配:

如果将Visual Studio*.sln文件(XML)与数千行进行合并,则此功能非常有效:)

如果这还不够的话,还有一个“XML排序”转换选项,可以对输入应用排序XSLT

常规差异:

使用“XML排序”转换:

从何处应用:


记事本++有一个比较插件。

我使用XSLT1.0编写了一个xml比较算法,在这里。您只需要修改“file2”变量,将输入xml文件与输入xml文件进行比较


它输出不匹配的分支和叶节点的结果,速度基于通常应预期的差异量。差异越大,速度越慢。

看看Altova套房。它们是一个了不起的XML工具,或者用Java和JAXBI等语言构建您自己的比较,可以构建我自己的差异工具。你有什么具体的算法吗?你必须想出自己的算法。但是,例如,假设JAXB为您提供Java对象,您可以确定,如果两个集合包含相同的元素,则它们是相等的,而不管顺序如何。是否有任何算法可以做到这一点?