尝试获取这两个类似的 XML(想要忽略 xmlns)和不同的元素序列,但对我来说无法正常工作。如果删除 xmlns,则 doc 是 simmilr。
我正在使用 XMlUnit 1.5
String s1 = "<root xmlns=\"http:example.com\">"
+"<Date/>"
+"<Time/>"
+"</root>";
String s2 = "<root>"
+"<Time/>"
+"<Date/>"
+"</root>";
myDiff = XMLUnit.compareXML(s1,s2);
您需要做两件事:
- 为了忽略不同的名称空间,您需要提供
DifferenceListener
从而缩小差异
-
默认值ElementQualifier
被使用过Diff
is ElementNameQualifier
仅比较具有相同本地名称和命名空间 URI 的元素。您还需要覆盖这个。
Diff xmlDiff = new Diff(s1, s2);
xmlDiff.overrideElementQualifier(new ElementNameQualifier() {
@Override
protected boolean equalsNamespace(Node control, Node test) {
return true;
}
});
xmlDiff.overrideDifferenceListener(new DifferenceListener() {
@Override
public int differenceFound(Difference diff) {
if (diff.getId() == DifferenceConstants.NAMESPACE_URI_ID) {
return RETURN_IGNORE_DIFFERENCE_NODES_IDENTICAL;
}
return RETURN_ACCEPT_DIFFERENCE;
}
@Override
public void skippedComparison(Node arg0, Node arg1) { }
});
创建“相似”的结果。为了获得“相同”的结果,您还需要降级CHILD_NODELIST_SEQUENCE_ID
差异。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)