Выбор нескольких узлов с использованием xpath в Java - PullRequest
0 голосов
/ 23 октября 2019

Я пытаюсь получить данные, используя XPath.

Я могу получить нужные данные, но при наличии нескольких данных выбирается только первый. И я хочу посчитать количество целевых данных.

Например, я хочу посчитать количество очередей, чье имя vpn-сообщения vpn / b. Структура XML выглядит следующим образом:

<queues>
    <queue>
        <name> queue/a </name>
        <info>
            <message-vpn> vpn/a </message-vpn>
        </info>
    </queue>
    <queue>
        <name> queue/b </name>
        <info>
            <message-vpn> vpn/b </message-vpn>
        </info>
    </queue>
    <queue>
        <name> queue/c </name>
        <info>
            <message-vpn> vpn/b </message-vpn>
        </info>
    </queue>
</queues>

А вот сценарий xpath, который я использовал.

/queues/queue/info/message-vpn[text()=("vpn/b")]

Когда я обращаюсь к данным, выбирается только очередь / b, а не c. Пожалуйста, помогите мне сделать это ..

Ответы [ 2 ]

0 голосов
/ 23 октября 2019

Исходное выражение xpath не выполняется, поскольку текст vpn/b заключен в пробелы. Другой способ сделать это -

/queues/queue/info/message-vpn[normalize-space()=("vpn/b")]

. Если вы хотите посчитать количество этих очередей, используйте метод count():

count(/queues/queue/info/message-vpn[normalize-space()=("vpn/b")])
0 голосов
/ 23 октября 2019

Попробуйте ниже:

//queues/queue/info/message-vpn[contains(.,'vpn/b')]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...