15

生成された.xmlファイルと.wsdlファイルを含む大きなディレクトリ構造を比較する必要があります。生成された.xmlファイルは、子要素が表示される順序が異なります。XmlUnit Diff.similar()メソッドは、このケースを処理することになっています。

「2つのドキュメントは、順序に関係なく同じ要素と属性が含まれている場合、「類似している」と見なされます。」

ただし、これは当てはまりません。.xmlファイルを取得し、2つの子要素の順序を逆にすると、XmlUnitはそれらが類似していないと言います。

XmlUnitが壊れており、組み込みのdiffユーティリティ以上の機能は提供されていません。

子要素の順序など、.xmlファイルの単純な違いを認識するXmlUnitの代替手段はありますか?

4

5 に答える 5

6

同様の問題があります。私の場合、同じ名前で属性が異なる複数のタグがありましたが (順序は関係ありません)、XmlUnit は常に最初に最初に、2 番目に 2 番目にチェックし、交換することができました。私の質問は:

順序付けされていないタグ (異なる属性を持つ同じタグ名) を持つ XmlUnit と同様の xml ファイルを比較する

ここで解決策を見つけました:

http://www.infoq.com/articles/xml-unit-test

私の場合、要素修飾子をオーバーライドするだけで解決しました:

    Diff diff = new Diff(controlXml, responseXml);
    diff.overrideElementQualifier(new ElementNameAndAttributeQualifier());
于 2011-07-05T09:54:45.683 に答える
3

次のオプションを設定すると、不正確な(非)類似性の問題が解決されることがわかりました。

XMLUnit.setIgnoreWhitespace(true);
于 2011-05-17T08:28:53.303 に答える
1

xmlunit と比較する前に、XML をソートすることをお勧めします。xmlunit ソートを使用して独自に記述するのではなく、必要に応じて xmlunit を構成するよりもはるかに簡単です。

于 2011-05-31T17:09:33.823 に答える
1

私はジムのコメントに同意します。私が XmlUnit で直面した問題のほとんどは、不適切な初期化が原因でした。

ただし、実装が必要な処理を行っていないと思われる場合は、いつでも XMLUnit ソース コードを調べて、Diff ハンドラーを独自のものに置き換えることができます。コードは非常に理解しやすく、独自の diff エンジンを実装するために多大な労力を費やすことなく、動作を完全に制御できます。

于 2011-02-23T19:33:17.683 に答える
0

XUnitを試しましたか?

于 2011-02-23T19:33:11.553 に答える