我从最近几天开始研究这个java API(XMLUuit.jar)。 我想通过使用XMLUnit API跳过XML标记的一些参数来比较两个XML文件。
<emp>
<name id="1">xyz</name>
</emp>
<emp>
<name id="2">xyz</name>
</emp>
如果我跳过id属性的比较,这两个文件是相同的。 我有一些情况需求是这样的。 任何建议????
答案 0 :(得分:0)
为了抑制某些差异,您实施了DifferenceEvaluator
import org.w3c.dom.Attr;
import org.xmlunit.builder.DiffBuilder;
import org.xmlunit.diff.*;
import org.xmlunit.util.Nodes;
public class AttributesTest {
public static void main(String[] args) {
Diff d = DiffBuilder.compare("<emp>\n" +
" <name id=\"1\">xyz</name>\n" +
"</emp>")
.withTest("<emp>\n" +
" <name id=\"2\">xyz</name>\n" +
"</emp>")
.withNodeMatcher(new DefaultNodeMatcher(ElementSelectors.byName))
.withDifferenceEvaluator((comparison, outcome) -> {
if (outcome != ComparisonResult.EQUAL && comparison.getType() == ComparisonType.ATTR_VALUE) {
Attr a = (Attr) comparison.getControlDetails().getTarget();
if ("id".equals(Nodes.getQName(a).getLocalPart())
&& "name".equals(Nodes.getQName(a.getOwnerElement()).getLocalPart())) {
return ComparisonResult.EQUAL;
}
}
return outcome;
})
.build();
System.err.println("Differences? " + d.hasDifferences());
}
}