子ノード シーケンスと属性リスト シーケンスを無視するカスタム差分リスナーを使用している 2 つの XML を比較する必要があります。
if (difference.getId() == DifferenceConstants.CHILD_NODELIST_SEQUENCE_ID ||
difference.getId() == DifferenceConstants.ATTR_SEQUENCE_ID)
return DifferenceListener.RETURN_IGNORE_DIFFERENCE_NODES_IDENTICAL;
私のコードは次の場合にうまく機能します:
<xml>
<elem1 att1="abc" att2="def"></elem1>
<elem1></elem1>
</xml>
と
<xml>
<elem1></elem1>
<elem1 att2="def" att1="abc"></elem1>
</xml>
ただし、これらの XML も同一であると見なす必要があります。
<xml>
<elem1>
<elem2>
<id>ABC</id>
.....
</elem2>
</elem1>
<elem1>
<elem2>
<id>DEF</id>
.....
</elem2>
</elem1>
</xml>
と
<xml>
<elem1>
<elem2>
<id>DEF</id>
.....
</elem2>
</elem1>
<elem1>
<elem2>
<id>ABC</id>
.....
</elem2>
</elem1>
</xml>
ここでは、シーケンスのみが混同されているため、両方の XML の両方の elem1 が同一であると見なして比較したいと考えています。したがって、コードが複数のネスト レベルで機能する必要があります。XMLUnitでそれは可能ですか? 誰か助けてください?
一時的な解決策を見つけました (自分の質問に 8 時間コメントを追加できません):
私は以前 ElementQualifier を次のようにオーバーライドしていました:
xmlDiff.overrideElementQualifier(new RecursiveElementNameAndTextQualifier());
より深いレベルの XML 比較に multiLevelElementNameandTextQualifier を使用することもできます。再帰はレベル 1 のみです。
詳細については、http: //xmlunit.sourceforge.net/userguide/html/ar01s03.html#ElementQualifierの例 20を参照してください。
要素名と属性を一致させる必要があり、これは名前とテキストと一致します..しかし、それでも..今のところ動作しているので、使用しています..
より良い解決策が見つかったら更新します
これが誰かに役立つことを願っています:)