[英]Compare two String arrays , return matched Strings and mismatched Strings separately
[英]Java - Compare 2 HTML strings and return the mismatched objects
我有两个1行innerHTML字符串(相当大),我需要比较它们,如果它们不匹配,我需要知道哪些对象不同。 例:
HTML 1:
<div><p><span class="text">MyText</span></p></div>
HTML 2:
<div><p><span class="text">NotMyText</span></p></div>
应该返回对象列表,在这种情况下,只能返回1个项目:
<span class="text">NotMyText</span>
我正在数千个链接/页面上运行脚本,因此速度非常重要。 我尝试了Google Diff,它仅返回不匹配的部分。 它会说MyText已删除,NotMyText已添加或类似内容,但这不是我所需要的。
有什么想法吗?
我认为您不应该在String Level上进行比较,因为从String diff比较不容易找出您的位置,其中的封闭元素是什么。 如果您使用DOM树表示,则应该更容易做到。
如果我是你,我会写一个递归的DOM比较方法,然后像这样对整个树进行一种深度优先搜索(只是伪代码):
DomDifference compare(DOMElement a, DOMElement b) {
if(a.isLeaf()) {
return DomDiff(a, b)
}
foreach(child: a.children()) {
otherChild = b.nextChild()
result = compare(child, otherChild);
if(!result.isEqual()) {
return result;
}
}
return DomDifference.nodesAreEqual;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.