Соответствующие теги с одинаковыми именами, но разными дочерними значениями - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь использовать XMLUnit 2 для сравнения XML-файлов.

<composite>
    <data>
        <subtag>
            <code>1</code>
        </subtag>
        <subtag>
            <code>2</code>
        </subtag>
    </data>
</composite>

Второй файл такой же, с той лишь разницей, что теги 'subtag' меняются местами.

<composite>
    <data>
        <subtag>
            <code>2</code>
        </subtag>
        <subtag>
            <code>1</code>
        </subtag>
    </data>
</composite>

Мне пока не повезло: я нашел набор ElementMatchers, подходящий для этих двух равных.

Есть ли готовое решение для этой проблемы?

1 Ответ

0 голосов
/ 29 мая 2018

Это в значительной степени совпадает с примером "tr, идентифицированным вложенным th" из руководства пользователя XMLUnit.Одно из решений состоит в том, чтобы использовать условное ElementSelector и убедиться, что оно использует правильное правило при решении, какое subtag взять - см. https://github.com/xmlunit/user-guide/wiki/SelectingNodes#conditional-elementselectors

В вашем конкретном случае что-то вроде

ElementSelectors.conditionalBuilder()
    .whenElementIsNamed("subtag")
    .thenUse(ElementSelectors.byXPath("./code", ElementSelectors.byNameAndText))
    .elseUse(ElementSelectors.byName)
    .build();

следует сделать.Это предполагает, что ваши subtag идентифицируются вложенным текстом их code дочернего элемента.

...