Получить только значение атрибута, используя xpath - PullRequest
0 голосов
/ 09 января 2020

У меня следующий xml код:

<?xml version="1.0" encoding="UTF-8"?>
    <party date="31.12.01"> 
        <guest name="Albert">
            <drink>wine</drink>
            <drink>beer</drink>
            <status single="true" sober="false" />
        </guest>
        <guest name="Martina">
            <drink>apple juice</drink>
            <status single="true" sober="true" />
        </guest>
        <guest name="Zacharias"> 
            <drink>wine</drink>
            <status single="false" sober="false" /> 
        </guest>
    </party>

Используя xpath, я просто хочу, чтобы имена гостей пили вино или пиво. Поэтому мне просто нужно значение атрибута имени.

Я пробовал следующее:

string(//guest/@name/drink[.="wine" or .="beer"])

//guest/@name/drink[.="wine" or .="beer"]

Но я не получаю только значение атрибута атрибута имени. Как мне это сделать?

Ответы [ 2 ]

2 голосов
/ 09 января 2020

Что вам нужно:

'//guest[drink[text()="wine" or text()="beer"]]/@name'

или

'//guest[drink[.="wine" or .="beer"]]/@name'
1 голос
/ 09 января 2020

Этот XPath,

//guest[drink = "wine" or drink = "beer"]/@name

выбирает атрибуты name тех элементов guest, которые имеют drink дочерние элементы со строковыми значениями "wine" или "beer", в соответствии с запросом.

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