I am currently working with XMLUnit and I am wondering if there is way to configure it to ignore only the id
attribute of the tags I want to compare.
Thanks in advance for your help.
I am currently working with XMLUnit and I am wondering if there is way to configure it to ignore only the id
attribute of the tags I want to compare.
Thanks in advance for your help.
I am gonna try to implement my own DifferenceListener to handle this need (see this post). Gonna post the result soon. It seems to work, gonna post the implementation tomorrow.
The solution is quite simple. You can configure your DifferenceEngine
to handle ATTR_VALUE
differences. Write custom difference listener class which implements DifferenceListener:
class IgnoreIDsDifferenceListener implements DifferenceListener {
private static final int[] IGNORE_VALUES = new int[] {
DifferenceConstants.ATTR_VALUE.getId(),
};
private boolean isIgnoredDifference(Difference difference) {
int differenceId = difference.getId();
for (int i=0; i < IGNORE_VALUES.length; ++i) {
if (differenceId == IGNORE_VALUES[i]) {
return true;
}
}
return false;
}
public int differenceFound(Difference difference) {
if (isIgnoredDifference(difference)) {
return RETURN_IGNORE_DIFFERENCE_NODES_IDENTICAL;
} else {
return RETURN_ACCEPT_DIFFERENCE;
}
}
public void skippedComparison(Node control, Node test) {
}
}
The required thing here is to check whether the attribute name is "id". Standard Java DOM functionality could help. But I prefer to do this by the means of regular expressions:
String controlNode = difference.getControlNodeDetail().getNode().toString();
controlNode .matches("^id=\".*\"")
P.S. See also: http://xmlunit.sourceforge.net/api/org/custommonkey/xmlunit/Difference.html
I am gonna try to implement my own DifferenceListener to handle this need (see this post). Gonna post the result soon. It seems to work, gonna post the implementation tomorrow.
© 2022 - 2024 — McMap. All rights reserved.