0

使用 groovy 和 XMLUnit2 比较 soapui 中的两个 xml 文件,有一些奇怪的情况,这两个文件都不同,但可以接受。所以必须忽略/跳过那些。

ResXML1:

<alpha:Errors>
    <alpha:Error ShortText="SHiff" Type="11">Generic error occured.</alpha:Error>
    <alpha:Error ShortText="SHiff" Type="12">Generic error occured.</alpha:Error>
</alpha:Errors>
<ShiftAttributes>
    <ShiftAttribute ShiftAttributeCode="41"/>
    <ShiftAttribute ShiftAttributeCode="17"/>
</ShiftAttributes>
<alpha:PriceInfo AgeQualifyingCode="10" Amount="19999.00" DiscountTypes="3" AMZAmount="225.00" NetAmount="19999.00" MCH="1" ValueAddAmount="150.00"/>

ResXML2:

<alpha:Warnings>
    <alpha:Warning ShortText="SHiff" Type="11">Generic error occurred.</alpha:Warning>
</alpha:Warnings>
<ShiftAttributes>
    <ShiftAttribute ShiftAttributeCode="17"/>
    <ShiftAttribute ShiftAttributeCode="41"/>
</ShiftAttributes>
<alpha:PriceInfo AgeQualifyingCode="10" Amount="19999.0" DiscountTypes="3" AMZAmount="225.0" NetAmount="19999.0" MCH="1" ValueAddAmount="150.0"/>

如果有人有任何想法,请在以下情况下帮助我。

1) How to ignore child attribute order? tried different nodematchers(byXpath, byNameandText etc..), but no luck.
<ShiftAttribute ShiftAttributeCode="41"/>
<ShiftAttribute ShiftAttributeCode="17"/>

2) How to ignore decimal value, 100.0 & 100.00. Tried to use BigDecimalElementDifferenceEvaluator, but cannot able to complete in soapui. If we have any easy method please help me?
4

1 回答 1

1

找到上述问题第一部分的解决方案

diff = DiffBuilder.compare(ResXML1) .withTest(ResXML2) .withNodeMatcher(new DefaultNodeMatcher(ElementSelectors.conditionalBuilder().whenElementIsNamed("ShiftAttribute").thenUse(ElementSelectors.byNameAndAttributes("ShiftAttributeCode")).elseUse(ElementSelectors.byName) .build())) .build();

于 2020-02-03T18:50:29.853 回答