質問
JDOMを使用してXMLを読み書きするコードのユニットテストを書いています。したがって、JDOMを比較する方法が必要です Element
リファレンスで私のコードによって作成されています Element
それらが同等のものであることを確認するために(同じ名前、名前空間、属性、さらに子供について同じものを再帰的に)確実にします。
不運にも、 Element.equals
要素が参照的に等しいかどうかのみをテストします。 2つの要素が同一の木を表すかどうかを最大限に判断するにはどうすればよいですか?
解決
以下は、2つのXML要素が同等であるかどうかを確認する必要があります。
String myElementString = XMLOutputter.outputString(myElement);
String testElementString = XMLOutputter.outputString(testElement);
boolean equals = myElementString.Equals(testElementString);
他のヒント
私は3つの方法しか考えることができません:
- コードを手動で作成して、一般にアクセス可能な要素フィールドを使用して比較します。
- Java反射を使用してコードを作成して、要素のフィールドを列挙し、それらすべてを比較します。浅いまたは深い比較はあなたのニーズ次第です。
- xxxoutputterクラスの1つを使用して、各要素を出力し、出力を比較します。たとえば、各要素からXML文字列を作成します
org.jdom.output.XMLOutputter
文字列を比較します。
すべてかなり不快!
所属していません StackOverflow