I want to compare two xml files using XMLUnit. I would like the DetailedDiff to not report identical tags in different orders as differences. For example, if I created a DetailedDiff with these two snippets:
<a><b/><c/></a>
and
<a><c/><b/></a>
The DetailedDiff will create two Differences since the b and c tags are out of order. I have tried overriding element qualifiers but it doesn't result in any changes. Am I doing something wrong or is this impossible to do with XMLUnit? For reference here's the code I'm using to compare two xml files (not including overrideElementQualifier calls).
public List<Difference> getDifferenceList(Reader file1, Reader file2) {
Diff d = new Diff(file1, file2); //I'm passing the args as FileReaders
d.overrideElementQualifier(new RecursiveElementNameAndTextQualifier());
detailedDiff = new DetailedDiff(d);
List<Difference> allDifferences = detailedDiff.getAllDifferences();
return allDifferences;
}
RecursiveElementNameAndTextQualifierwill yield the same result as the defaultElementNameQualifier- b and c are out of order but other than that the documents are identical.Elements that are out of order constitute a recoverable difference, so
DiffandDetailedDiffwill say the documents are "similar" but not "identical". So either you ignore recoverable differences or you must override theDifferenceListenerrather than theElementQualifierto downgrade a difference of typeCHILD_NODELIST_SEQUENCE_IDfromRETURN_IGNORE_DIFFERENCE_NODES_SIMILAR(the default) toRETURN_IGNORE_DIFFERENCE_NODES_IDENTICAL. Something likewhich accepts the default but downgrades just the out-of-order differences.