Сравнение вложенных узлов XML и игнорирование всего остального? - PullRequest
0 голосов
/ 08 марта 2019

Есть ли способ сравнить части 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] с:

...