XML Diff Tool,用于对2个XML进行无序比较

时间:2018-03-05 04:20:47

标签: json xml diff

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

示例:

function countCommonCharacters(userWord, goalWord){
  var compareNum = 0;    
  var check = Math.min(userWord.length, goalWord.length);
  for (var i = 0; i < check; i++) {
    if (userWord.charAt(i) == goalWord.charAt(i))
    compareNum++;
  }
  return compareNum;
}

function showResult(result) {
  var div = document.createElement('div');
  div.innerHTML = result;
  div.style.color = 'red';
  document.body.appendChild(div);
}

var goalWord = "12345678";
var userWord = "02345000";
var result = countCommonCharacters(userWord, goalWord);
showResult(result);

2节点元素应该被认为是相似的,唯一不同的是Node1有一个子名“Alpha”,在另一个节点是“Alpha2”。

StackOverflow有一个类似的question,但8年前被问到,解决方案不再适用。有没有更新的工具?

3 个答案:

答案 0 :(得分:6)

根据XML的大小,使用具有可调偏斜容差的差异工具 - 算法在多大程度上寻找&#34;类似&#34; line - 和 closeness matching

&#34;朴素&#34;差异使用Beyond Compare 4:

Naive diff

靠近匹配:

With closeness matching

当将Visual Studio * .sln文件(XML)与数千行合并时,这非常有效:)

如果这还不够,那么可以选择&#34; XML Sort&#34;将排序XSLT应用于输入的转换。

常规差异:

enter image description here

使用&#34; XML Sort&#34;转化率:

Example

从哪里申请:

XML format dialog

答案 1 :(得分:0)

Notepad ++有一个比较插件。

答案 2 :(得分:0)

我已经在此处使用xslt 1.0编写了xml比较算法。您只需要修改“ file2”变量即可将输入的xml文件与之进行比较。

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

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