1. ホーム

[解決済み】Javaで2つのXMLドキュメントを比較する最適な方法

2022-04-11 10:45:10

質問

私は基本的にカスタムメッセージフォーマットをXMLメッセージに変換し、もう一方の端にそれを送信するアプリケーションの自動テストを書こうとしています。 私は入力/出力メッセージのペアの良いセットを持っているので、私がする必要があるのは、入力メッセージを送り、もう一方の端から出てくるXMLメッセージを聞くことだけです。

いざ、実際の出力と期待される出力を比較しようとすると、いくつかの問題にぶつかる。 最初に考えたのは、期待されるメッセージと実際のメッセージの文字列比較を行うことだけでした。 なぜなら、私たちが持っているサンプルデータは常に一貫してフォーマットされているわけではなく、XMLの名前空間にはしばしば異なるエイリアスが使用されているからです(名前空間が全く使用されていない場合もあります)。

しかし、もっと良い方法や活用できるライブラリーがあるような気がしています。

つまり、煮詰めていくと、問題は

有効なXMLを含む2つのJava文字列がある場合、それらが意味的に等価であるかどうかをどのように判断しますか? もし、何が違うのかを判断する方法があれば、ボーナスポイントを差し上げます。

解決方法は?

XMLUnitのための仕事のようだ

public class SomeTest extends XMLTestCase {
  @Test
  public void test() {
    String xml1 = ...
    String xml2 = ...

    XMLUnit.setIgnoreWhitespace(true); // ignore whitespace differences

    // can also compare xml Documents, InputSources, Readers, Diffs
    assertXMLEqual(xml1, xml2);  // assertXMLEquals comes from XMLTestCase
  }
}