我想比较使用XMLUnit的两个XML文件。我希望DetailedDiff不要以不同的顺序报告不同的标签。例如,如果我创建了这两个片段一个DetailedDiff:如何用XMLUnit的DetailedDifference忽略相同元素的顺序?
<a><b/><c/></a>
和
<a><c/><b/></a>
的DetailedDiff将创建以来,B和C代码的两条差异是无序。我试过重写元素限定符,但不会导致任何更改。我做错了什么,或者这对于XMLUnit来说是不可能的?以下是我用来比较两个xml文件(不包括overrideElementQualifier调用)的代码。
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;
}
这是完美的答案。谢谢..但是我需要忽略不存在的节点。因为我不想在结果输出中看到这样的输出:子节点预期存在“null”,但是......我该怎么做?问候。 – limonik
为此,您可以使用相同的方法@limonik - 您想忽略的差异是“CHILD_NODE_NOT_FOUND_ID”,可能是“CHILD_NODELIST_LENGTH_ID”。 –