Соответствие массиву / списку значений в выражении xpath - PullRequest
0 голосов
/ 22 мая 2019

Я ищу соответствие списка / массива значений в моем выражении xpath и хотел бы знать, возможно ли это.

Мой XML

<Parent-tag>
        <Child-Tag>
            <status>Up</status>
            <prop-name>prop-1</prop-name>
        </Child-Tag>
        <Child-Tag>
            <status>Up</status>
            <prop-name>prop-2</prop-name>
        </Child-Tag>
        <Child-Tag>
            <status>Down</status>
            <prop-name>prop-3</prop-name>
        </Child-Tag>
        <Child-Tag>
            <status>Up</status>
            <prop-name>prop-4</prop-name>
        </Child-Tag>
</Parent-Tag>

Я бы хотел XPATH, как показано ниже

/Parent-Tag/Child-Tag[prop-name=('prop-1', 'prop-2','prop-3')]/status

Я попробовал двух тестеров xpath онлайн:

(1) https://www.freeformatter.com/xpath-tester.html#xpath-examples

(2) https://www.webtoolkitonline.com/xml-xpath-tester.html

В (1) вышеприведенное выражение вернуло значения, но в (2) оно вернулось с синтаксической ошибкой.

Я не уверен, что это связано с версиями XPATH. Знаете ли вы, если последняя версия XPATH поддерживает это? Если да, есть ли альтернатива этому в более старых версиях XPATH?

Тем не менее, я понимаю, что это может быть достигнуто следующим образом (, но не то, что я хотел бы ):

/Parent-Tag/Child-Tag[prop-name='prop-1' or prop-name='prop-2' or prop-name='prop-3')]/status

1 Ответ

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

Вы можете использовать contains, как показано ниже. (Протестировано в браузере Chrome, чтобы убедиться, что xpath работает в Xpath 1.0, поскольку браузер поддерживает только xpath 1.0)

/Parent-Tag/Child-Tag[contains('prop-1, prop-2, prop-3',prop-name)]/status

Версия браузера Evidence:

enter image description here

Версия XML для доказательств:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...