如何在此Xpath表达式中选择特定的类别值

时间:2018-08-17 17:25:28

标签: xpath

我有一个供稿here。我正在尝试创建一个XPath表达式,该表达式返回具有等于Bananas类别的项目。由于XML解析器的限制,我不能直接使用名称空间来选择项目。

表达式/rss/channel/item//*[name()='itunes:category']返回以下内容:

Element='<itunes:category 
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" 
text="Apples"/>'
Element='<itunes:category 
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" 
text="Bananas"/>'
...

然后/rss/channel/item//*[name()='itunes:category']/@text返回此内容:

Attribute='text=Apples'
Attribute='text=Bananas'
...

但是我不知道如何将响应限制在一个类别(例如香蕉)上?

我想要某种这样的表达:

/rss/channel/item//*[name()='itunes:category' and contains(., 'Bananas')]

但这不起作用。语法上无效。仅返回香蕉的正确XPath表达式语法是什么?

1 个答案:

答案 0 :(得分:0)

您是要按商品子项的属性进行过滤,但仍返回商品节点吗?

/rss/channel/item/*[name()='itunes:category' and contains(@text,'Apples')]/parent::item

或更简单

/rss/channel/item[*[name()='itunes:category' and @text='Apples']]

我在示例中使用了Apples,因为使用您的示例x​​ml文件,香蕉的结果为0。