Запрос одинаковых имен элементов с помощью XPath - PullRequest
2 голосов
/ 14 декабря 2011

Я написал запрос Xpath для поиска элемента с nodeValue, который содержит строку.

/campaigns/campaign[contains("7218322441485795", creative_id)] 

Однако запрашиваемый мной XML содержит несколько элементов <creative_id>;

<campaigns>
    <campaign>
        <creative_id>41485795</creative_id>
        <creative_id>41485759</creative_id>
        <creative_id>41485694</creative_id>
        <resources>
        ....

Проблема в том, что запрос оценивает только первый элемент creative_id, а не второй и третий.

Как написать запрос XPath, чтобы он не ограничивался первым creative_id элементом?

1 Ответ

3 голосов
/ 14 декабря 2011

Функция XPath contains возвращает true, когда в первом аргументе найдено строковое значение второго аргумента.Ваш заказ кажется подозрительным.В настоящее время вы ищете строковое значение creative_id в данной строке, а не значение этой строки в creative_id.

Если предположить, что порядок аргументов указан правильно, следующее выражение возвращает campaign элемент, если любой из его creative_id потомков соответствует части предоставленной строки:

/campaigns/campaign[creative_id[contains("7218322441485795", .)]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...