我有一个供稿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表达式语法是什么?
答案 0 :(得分:0)
您是要按商品子项的属性进行过滤,但仍返回商品节点吗?
/rss/channel/item/*[name()='itunes:category' and contains(@text,'Apples')]/parent::item
或更简单
/rss/channel/item[*[name()='itunes:category' and @text='Apples']]
我在示例中使用了Apples,因为使用您的示例xml文件,香蕉的结果为0。