Ignorando un atributo particular de un Nodo específico al comparar archivos xml usando XMLUnit 2.X
Tengo dos archivos XML:
<!------------------------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>
Tengo que ignorar el atributo:id
del nodo:note
al comparar estos dos archivos.
estoy usandoDiffBuilder
:
Diff documentDiff = DiffBuilder.compare(srcFile).withTest(destFile).build()
La mayoría de las soluciones en línea sugirieron implementarDifferenceEvaluator
:
Intenté eso también, pero esto ignora todos los nodos con ID de atributo, mientras que quiero ignorar un atributo de un nodo específico:
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;
}
}
Método de llamada en mi clase de prueba:
final Diff documentDiff = DiffBuilder.compare(src).withTest(dest)
.withDifferenceEvaluator(new IgnoreAttributeDifferenceEvaluator("id"))
.build();
¿Alguien puede sugerirme una forma de lograr esto usando XMLUnit 2.x Nuevo en XMLUnit, así que por favor ayude en consecuencia.
Gracias por adelantado.