XMLUnit - 比较两个忽略子顺序的XML

use*_*587 9 java compare xmlunit

我试图看看我是否可以使用XMLUnit来比较以下两个不同的XML.我使用Diff类来比较以下两个XML并检查类似的返回false.

XML One
<Required>
   <Question desc="Are you single?">
      <Answers>
        <Answer value="Yes"/>
        <Answer value="No"/>
      </Answers>
   </Question>
</Required>

XML Two
<Required>
   <Question desc="Are you single?">
      <Answers>
        <Answer value="No"/> ''Order is reversed in XML two
        <Answer value="Yes"/>
      </Answers>
   </Question>
</Required>
Run Code Online (Sandbox Code Playgroud)

这是我的JAVA代码:

Diff xmlDiff;
try {
    xmlDiff = new Diff(xmlOne, xmlTwo);
    xmlDiff.overrideElementQualifier(new RecursiveElementNameAndTextQualifier());
} catch (Exception e) { }
boolean isEqual = xmlDiff.similar()
Run Code Online (Sandbox Code Playgroud)

Buh*_*uhb 2

xmlDiff.similar应该可以解决问题,但我经历过这并不总是有效。我的解决方法是在比较之前对元素进行排序。

请注意,在应用程序中构建在输出中具有明确定义的顺序通常是一个好主意,因为这使得自动测试变得更加容易。