我正在寻找一个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年前被问到,解决方案不再适用。有没有更新的工具?
答案 0 :(得分:6)
根据XML的大小,使用具有可调偏斜容差的差异工具 - 算法在多大程度上寻找&#34;类似&#34; line - 和 closeness matching 。
&#34;朴素&#34;差异使用Beyond Compare 4:
靠近匹配:
当将Visual Studio * .sln文件(XML)与数千行合并时,这非常有效:)
如果这还不够,那么可以选择&#34; XML Sort&#34;将排序XSLT应用于输入的转换。
常规差异:
使用&#34; XML Sort&#34;转化率:
从哪里申请:
答案 1 :(得分:0)
Notepad ++有一个比较插件。
答案 2 :(得分:0)
我已经在此处使用xslt 1.0编写了xml比较算法。您只需要修改“ file2”变量即可将输入的xml文件与之进行比较。
https://github.com/sflynn1812/xslt-diff-turbo
它输出不匹配的分支和叶节点的结果,并且速度基于通常应该预期的差异量。差异越多,速度就越慢。