0

Comparing two xml files in soapui using groovy with XMLUnit2, Have some weird cases which are different in both files, but are acceptable. So have to ignore/skip those.

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"/>

If anyone have any idea, please help me in below conditions.

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?
Reddy
  • 23
  • 3

1 Answers1

2

Found solution for first part of the above question

diff = DiffBuilder.compare(ResXML1).withTest(ResXML2)
   .withNodeMatcher( 
        new DefaultNodeMatcher( 
          ElementSelectors.conditionalBuilder()   
            .whenElementIsNamed("ShiftAttribute")
            .thenUse( ElementSelectors.byNameAndAttributes("ShiftAttributeCode"))
            .elseUse(ElementSelectors.byName)
          .build()
        )
   ).build();
Dirk Deyne
  • 6,048
  • 1
  • 15
  • 32
Reddy
  • 23
  • 3