Как выбрать конкретное значение категории в этом выражении Xpath

У меня есть фид здесь . Я пытаюсь создать выражение XPath, которое возвращает элементы, которые имеют категорию, равную бананам. Из-за ограничений в моем синтаксисе 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, чтобы просто вернуть Бананы?

xpath,

1

Ответов: 1


0

Вы просто хотите отфильтровать атрибуты элемента child, но все же вернуть узел элемента?

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

или проще

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

Я использовал Apples в примере, потому что, используя ваш пример xml-файла, есть 0 результатов для Bananas.

XPath,
Похожие вопросы
Яндекс.Метрика