4

JDOM を使用して XML を読み書きするコードの単体テストを作成しています。Elementしたがって、コードによって生成される JDOM を参照と比較Elementして、それらが同等であることを確認する何らかの方法が必要です(同じ名前、名前空間、および属性に加えて、その子に対しても再帰的に同じ)。

残念ながら、Element.equals要素が参照的に等しいかどうかのみをテストします。2 つの要素が同一のツリーを表しているかどうかを判断するにはどうすればよいですか?

4

2 に答える 2

3

以下は、2 つの XML 要素が等しいかどうかを確認する必要があります。

String myElementString = XMLOutputter.outputString(myElement);
String testElementString = XMLOutputter.outputString(testElement);
boolean equals = myElementString.Equals(testElementString);
于 2011-09-10T20:15:34.233 に答える
1

次の3つの方法しか考えられません。

  1. Element のパブリックにアクセス可能なフィールドを使用して、比較するコードを手動で作成します。
  2. Java リフレクションを使用して Element のフィールドを列挙し、それらすべてを比較するコードを作成します。浅い比較または深い比較は、ニーズ次第です。
  3. xxxOutputter クラスの 1 つを使用して各 Element を出力し、出力を比較します。たとえば、各要素から XML 文字列を作成し、文字列をorg.jdom.output.XMLOutputter比較します。

すべてかなりヤバイ!

于 2011-09-10T20:12:52.703 に答える