Есть ли способ сравнить части XML и игнорировать остальные?
Например:
<person>
<addr>want to ignore</addr>
<phone>
<home>5555</home>
<mobile>9090</mobile>
<work>
<email>a@a.com</email>
<mobile>9090</mobile>
<home>12121</home>
</work>
</phone>
<hobby>want to ignore</hobby>
</person>
Меня интересует только сравнение элемента «работа» и его дочерних элементов и игнорирование остальных, учитывая, что дом и мобильный телефон могут быть в другом порядке. Также может быть другое значение, которое меня не интересует.
// When // Then
ElementSelector ignoreSelector = ElementSelectors
.conditionalBuilder()
.whenElementIsNamed("phone")
.thenUse(ElementSelectors.byXPath(".//work", ElementSelectors.byNameAndText))
.elseUse(ElementSelectors.conditionalSelector(it -> false, byName)).build();
assertThat(actualXML,
isSimilarTo(controlXML)
.ignoreWhitespace()
.withNodeMatcher(new DefaultNodeMatcher(ignoreSelector)));
Я получаю:
java.lang.AssertionError:
Ожидаемый: ожидаемый ребенок 'person', но был 'null' - сравнение в / person [1] с: