2010-10-15 6 views
9

Ich versuche zu sehen, ob ich XMLUnit verwenden könnte, um die folgenden zwei verschiedenen XML zu vergleichen. Ich habe die Diff-Klasse verwendet, um die beiden folgenden XML-Werte zu vergleichen und nach ähnlichen Fehlern zu suchen.XMLUnit - Vergleichen Sie zwei XML, ignorieren Sie die untergeordnete Reihenfolge

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> 

Hier ist meine JAVA-Code:

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

Antwort

2

xmlDiff.similar sollte den Trick tun, aber ich habe erfahren, dass dies nicht immer funktioniert. Meine Abhilfe bestand darin, die Elemente vor dem Vergleich zu sortieren.

Beachten Sie, dass es oft eine gute Idee ist, in Ihre Anwendung zu integrieren, um eine gut definierte Reihenfolge in Ihrer Ausgabe zu haben, da dies das automatische Testen so viel einfacher macht.