选择属性后选择元素

时间:2019-10-17 17:00:21

标签: xml xpath

如何从另一个元素中选择包含特定属性的元素值?

我尝试过//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>

预期的输出显示具有来自美国国家/地区的艺术家的标题

2 个答案:

答案 0 :(得分:1)

title不是artist的子代,而是其父代的子代:

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

或者,如果title始终位于artist之前,则可以使用

//artist[@country='USA']/preceding-sibling::title

答案 1 :(得分:1)

很难看到,因为您的XML没有缩进,但是您正在查看“ cd”元素。

这是我要使用的XPath:

/catalog/cd[artist/@country='USA']/title