0
比較XML文件,我有兩個XML文件:忽略特定節點的特定屬性,而使用XMLUnit 2.X
<!------------------------File1--------------------------------->
<note id="ignoreThisAttribute_1">
<to>Experts</to>
<from>Matrix</from>
<heading id="dontIgnoreThisAttribute_1">Reminder</heading>
<body>Help me with this problem</body>
</note>
<!------------------------File2--------------------------------->
<note id="ignoreThisAttribute_2">
<to>Experts</to>
<from>Matrix</from>
<heading id="dontIgnoreThisAttribute_2">Reminder</heading>
<body>Help me with this problem</body>
</note>
我不得不忽視的屬性:節點的id
:note
而比較這兩個文件。
我使用DiffBuilder
:
Diff documentDiff = DiffBuilder.compare(srcFile).withTest(destFile).build()
大多數的在線解決方案建議實施DifferenceEvaluator
:
嘗試過爲好,但忽略了與屬性ID的所有節點,而我想忽略從屬性特定的節點:
public class IgnoreAttributeDifferenceEvaluator implements DifferenceEvaluator {
private String attributeName;
public IgnoreAttributeDifferenceEvaluator(String attributeName) {
this.attributeName = attributeName;
}
@Override
public ComparisonResult evaluate(Comparison comparison, ComparisonResult outcome) {
if (outcome == ComparisonResult.EQUAL)
return outcome;
final Node controlNode = comparison.getControlDetails().getTarget();
System.out.println(controlNode.getNodeName());
if (controlNode instanceof Attr) {
Attr attr = (Attr) controlNode;
if (attr.getName().equals(attributeName)) {
return ComparisonResult.EQUAL;
}
}
return outcome;
}
}
在我的測試類調用方法:
final Diff documentDiff = DiffBuilder.compare(src).withTest(dest)
.withDifferenceEvaluator(new IgnoreAttributeDifferenceEvaluator("id"))
.build();
有人可以建議我一種方式,我可以使用XMLUnit 2.x來實現這一點 XMLUnit的新手,請相應地提供幫助。
在此先感謝。
非常感謝Stefan。這很有幫助。我使用「withAttributeFilter」。 猜猜我需要更新我的lamba(Java 8)的概念。 –