XMLUnit-2.0 не игнорирует порядок узлов

#java #xml #xmlunit-2

#Ява #xml #xmlunit-2

Вопрос:

Я сравниваю два XML-файла с помощью классов пакетов xmlunit. Я пытаюсь игнорировать порядок узлов при выборе узла. Но все же в результате различия я наблюдаю ,что он сравнивает узлы на одной и той же глубине в обоих xml и показывает их по-разному. Узел, который меня здесь интересует, — это «запись», а элемент для выбора узла-это timeDimensionStartDate. Пожалуйста, дайте мне знать, где я ошибаюсь.

Я использую следующие зависимости в своем pom.xml для того, чтобы использовать пакеты xmlunit2.

 lt;dependencygt;  lt;groupIdgt;org.xmlunitlt;/groupIdgt;  lt;artifactIdgt;xmlunit-corelt;/artifactIdgt;  lt;versiongt;2.8.2lt;/versiongt;  lt;/dependencygt;  lt;dependencygt;  lt;groupIdgt;org.xmlunitlt;/groupIdgt;  lt;artifactIdgt;xmlunit-matcherslt;/artifactIdgt;  lt;versiongt;2.8.2lt;/versiongt;  lt;/dependencygt;  

Узел управления:

 lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?gt; lt;dataRecord xmlns="https://someinfo"gt;  lt;dhgt;  lt;!---some fields --gt;  lt;/dhgt;  lt;recordsgt;  lt;recordgt;  lt;rtgt;123lt;/rtgt;  lt;srvcsgt;  lt;srvcgt;ABClt;/srvcgt;  lt;/srvcsgt;  lt;timeDimensionStartDategt;20211003lt;/timeDimensionStartDategt;  lt;timeDimensionEndDategt;20211003lt;/timeDimensionEndDategt;  lt;!---Other elements---gt;  lt;/recordgt;  lt;!--Multiple record nodes ---gt;  lt;/recordsgt;  

Тестовый узел

 lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?gt; lt;dataRecord xmlns="https://someinfo"gt;  lt;dhgt;  lt;!---some fields --gt;  lt;/dhgt;  lt;recordsgt;  lt;recordgt;  lt;rtgt;123lt;/rtgt;  lt;srvcsgt;  lt;srvcgt;ABClt;/srvcgt;  lt;/srvcsgt;  lt;timeDimensionStartDategt;20211005lt;/timeDimensionStartDategt;  lt;timeDimensionEndDategt;20211005lt;/timeDimensionEndDategt;  lt;!---Other elements---gt;  lt;/recordgt;  lt;!--Multiple record nodes ---gt;  lt;recordgt;  lt;rtgt;123lt;/rtgt;  lt;srvcsgt;  lt;srvcgt;ABClt;/srvcgt;  lt;/srvcsgt;  lt;timeDimensionStartDategt;20211003lt;/timeDimensionStartDategt;  lt;timeDimensionEndDategt;20211003lt;/timeDimensionEndDategt;  lt;!---Other elements---gt;  lt;/recordgt;  lt;!--Multiple record nodes ---gt;  lt;/recordsgt;  

Difference received: INFO: Expected text value ‘20211003’ but was ‘20211005’ — comparing lt;timeDimensionStartDate …gt;20211003 at /dataRecord[1]/records[1]/record[1]/timeDimensionStartDate[1]/text()[1] to lt;timeDimensionStartDate …gt;20211005 at /dataRecord[1]/records[1]/record[1]/timeDimensionStartDate[1]/text()[1] (DIFFERENT)

XMLunit code snippet use for comaprison:

 Diff nodeDiff = DiffBuilder.compare(source)  .withTest(target).ignoreComments().ignoreWhitespace().checkForSimilar()  .withNodeMatcher(new DefaultNodeMatcher(ElementSelectors.conditionalBuilder()  .whenElementIsNamed("record").thenUse(ElementSelectors.byXPath("./timeDimensionStartDate", ElementSelectors.byNameAndText)).  elseUse(ElementSelectors.byName).build()))  .withDifferenceEvaluator(((comparison, outcome) -gt; {  if (outcome == ComparisonResult.DIFFERENT amp;amp;   comparison.getType() == ComparisonType.CHILD_NODELIST_SEQUENCE) {  return ComparisonResult.EQUAL;  }   return outcome; })).build();