XMLUnitを使用して、2 つの類似した XML ファイルを比較したいと考えています。
基本的にすべて同じでFile1
、 のコピーですがFile2
、File2
では 1 つのノード内のいくつかの要素の順序を変更しました。
これらのファイルを比較して類似の結果を返し、これらのファイルを異なるものとして扱わないテストを実行しようとしています。
このリンクが役立つと思います - http://www.ibm.com/developerworks/java/library/j-cq121906.html#N10158
基本的に、File1が次のような場合-
<account>
<id>3A-00</id>
<name>acme</name>
</account>
<name>
File2 は同じですが、と<id>
-の順序のみが異なります。
<account>
<name>acme</name>
<id>3A-00</id>
</account>
次に、これらを比較して同様の結果を返す以下のようなテストを作成できます。
public void testIdenticalAndSimilar() throws Exception {
String controlXML = "<account><id>3A-00</id><name>acme</name></account>";
String testXML = "<account><name>acme</name><id>3A-00</id></account>";
Diff diff = new Diff(controlXML, testXML);
assertTrue(diff.similar());
assertFalse(diff.identical());
}
それが役立つことを願っています。
これはそれを行う必要があります:
// Assuming file1 and file2 are not deeply nested XML files
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc1 = docBuilder.parse(file1);
Document doc2 = docBuilder.parse(file2);
// SOLUTION 1: Are the files "similar"?
Diff diff = new Diff(doc1, doc2);
System.out.println("Similar (true/false): " + diff.similar());
// SOLUTION 2: Should you want detailed differences (especially useful for deeply nested files)
Diff diff = new Diff(doc1, doc2);
diff.overrideElementQualifier(new RecursiveElementNameAndTextQualifier());
DetailedDiff detailedDiff = new DetailedDiff(diff);
System.out.println("Detailed differences: " + detailedDiff.getAllDifferences().toString());
それが少し役立つことを願っています。ここで XMLUnit について読んでください。