SoapUI (Groovy) で 2 つの XML ファイルを比較したいのですが、これらは似ていますが、子ノードが順番に並んでいません。XML ユニット v2.3.0 を使用しています。
XML1:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility" xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
</env:Header>
<soap:Body>
<Details>
<RateType RateTypeID="6">
<RateType>AAAAA</RateType>
<BaseType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<UOM>percent</UOM>
</RateType>
<RateType RateTypeID="3">
<RateType>BBB</RateType>
<BaseType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<UOM>percent</UOM>
</RateType>
<RateType RateTypeID="41">
<RateType>CCC</RateType>
<BaseType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<UOM>percent</UOM>
</RateType>
<RateType RateTypeID="43">
<RateType>DDD</RateType>
<BaseType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<UOM>percent</UOM>
</RateType>
</Details>
</soap:Body>
</soap:Envelope>
XML2:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility" xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
</env:Header>
<soap:Body>
<Details>
<RateType RateTypeID="41">
<RateType>CCC</RateType>
<BaseType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<UOM>percent</UOM>
</RateType>
<RateType RateTypeID="43">
<RateType>DDD</RateType>
<BaseType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<UOM>percent</UOM>
</RateType>
<RateType RateTypeID="6">
<RateType>AAAAA</RateType>
<BaseType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<UOM>percent</UOM>
</RateType>
<RateType RateTypeID="3">
<RateType>BBB</RateType>
<BaseType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<UOM>percent</UOM>
</RateType>
</Details>
</soap:Body>
</soap:Envelope>
上記の例では、両方の XML の内容は似ていますが、順序のみが異なります。両方を比較して、それらが等しいかどうかを知りたいです。
以下のコードを実行したとき:
Diff myDiffSimilar = DiffBuilder.compare(XML1))
.withTest(XML2)
.withNodeMatcher(new DefaultNodeMatcher(ElementSelectors.conditionalBuilder().whenElementIsNamed("Rate").thenUse(ElementSelectors.selectorForElementNamed("RateValue", ElementSelectors.byNameAndAllAttributes)).build()))
.withNodeMatcher(new DefaultNodeMatcher(ElementSelectors.conditionalBuilder().whenElementIsNamed("RateType").thenUse(ElementSelectors.selectorForElementNamed("RateType", ElementSelectors.byNameAndAllAttributes)).build()))
.checkForSimilar().build();
log.info myDiffSimilar.getDifferences().toString();
次の出力が得られます
[Expected child '{http://schemas.xmlsoap.org/soap/envelope/}Envelope' but was 'null' - comparing <soap:Envelope...> at /Envelope[1] to <NULL> (DIFFERENT), Expected child 'null' but was '{http://schemas.xmlsoap.org/soap/envelope/}Envelope' - comparing <NULL> to <soap:Envelope...> at /Envelope[1] (DIFFERENT)]
このシナリオで使用する必要がある要素セレクター/条件ビルダーについて誰かがアドバイスしてくれますか?