Выбор элемента после выбора атрибута - PullRequest
0 голосов
/ 17 октября 2019

Как выбрать значение элемента, содержащего определенный атрибут, из другого элемента?

Я попытался //artist[@country='USA']/title, но он не дал результата

Ниже приведена структура того, как выглядит мой xmlкак

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
 <cd>
 <title>I DON'T WANT TO MISS A THING</title>
 <artist country="USA">AEROSMITH</artist>
 <price>9.90</price>
 <year>1998</year>
 </cd>
 <cd>
 <title>(EVERYTHING I DO) I DO IT FOR YOU</title>
 <artist country="CANADA">BRYAN ADAMS</artist>
 <price>10.20</price>
 <year>1991</year>
 </cd>
</catalog>

ожидаемый вывод с названием исполнителя из страны USA

Ответы [ 2 ]

1 голос
/ 17 октября 2019

title не является дочерним по отношению к artist, но является дочерним по отношению к его родителю:

//artist[@country='USA']/../title

Или, если title всегда предшествует artist, вы можете использовать

//artist[@country='USA']/preceding-sibling::title
0 голосов
/ 17 октября 2019

Труднее увидеть, потому что ваш XML не имеет отступов, но вы смотрите на элементы "cd".

Это XPath, который я бы использовал:

/catalog/cd[artist/@country='USA']/title
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...