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

XML Diff Tool for unordered comparison of 2 XMLs

我正在寻找一个 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>

2 个节点元素应该被认为是相似的,唯一的区别是节点 1 有一个子名称 "Alpha",在另一个节点中是 "Alpha2"。

Whosebug 也有类似的question,不过8年前有人问过,解决方案已经失效了。有更新的工具可用吗?

根据 XML 的大小,使用具有可调 偏斜容差的 diff 工具 - 算法将寻找 "similar" 线的距离 - 和亲密度匹配.

"Naive" 使用 Beyond Compare 4 的差异:

接近度匹配:

这在合并具有数千行的 Visual Studio *.sln 文件 (XML) 时非常有效:)

如果这还不够,还有一个 "XML Sort" 转换选项,将排序 XSLT 应用于输入。

常规差异:

"XML Sort"转换:

从哪里申请:

Notepad++ 有比较插件。

我已经使用此处的 xslt 1.0 编写了一个 xml 比较算法。您只需要修改 "file2" 变量以将输入 xml 文件与

进行比较

https://github.com/sflynn1812/xslt-diff-turbo

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