尝试让这两个类似的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);
答案 0 :(得分:2)
您需要做两件事:
DifferenceListener
ElementQualifier
使用的默认Diff
为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) { }
});
创建一个类似的&#34;结果。为了得到一个相同的&#34;结果您还需要降低CHILD_NODELIST_SEQUENCE_ID
差异。