Java XMLUnit not properly ignoring child order when comparing

132 Views Asked by At

I am trying to use Java XMLUnit to check if these two XML's are the same, ignoring order. I have tried using the Diff approach as well as using NodeMatcher but neither worked. I have tried a variety of ElementQualifiers as well. What am I missing here?

These are the two XMLs:

<?xml version="1.0" encoding="UTF-8"?>
<test>
  <entry>
    <key>foo</key>
    <value>global</value>
  </entry>
  <entry>
    <key>my_boolean</key>
    <value>false</value>
  </entry>
  <entry>
    <key>my_number</key>
    <value>0</value>
  </entry>
  <entry>
    <key>my_json</key>
    <value>[]</value>
  </entry>
</test>

<?xml version="1.0" encoding="UTF-8"?>
<test>
  <entry>
    <key>my_json</key>
    <value>[]</value>
  </entry>
  <entry>
    <key>foo</key>
    <value>global</value>
  </entry>
  <entry>
    <key>my_boolean</key>
    <value>false</value>
  </entry>
  <entry>
    <key>my_number</key>
    <value>0</value>
  </entry>
</test>

Here are the code snippets I have tried:

XmlAssert.assertThat(actualXmlString)
    .and(expectedXmlString)
    .withNodeMatcher(new DefaultNodeMatcher(ElementSelectors.byNameAndText))
    .ignoreChildNodesOrder()
    // .ignoreWhitespace()
    .normalizeWhitespace()
    .areSimilar();

Diff diff = new Diff(actualXmlString, expectedXmlString);
diff.overrideElementQualifier(new ElementNameAndTextQualifier());
assertXMLEqual(diff, true);
0

There are 0 best solutions below