XPath для выбора элемента на основе дочернего значения childs


208

Попытка выбрать элемент на основе значения одного из его дочерних элементов.

Думая следующее, но не работает, благодарю за любую помощь, спасибо

./book[/author/name = 'John'] или

./book[/author/name text() = 'John']

Нужны все книги, где имя автора = "Джон"

XML-файл

<list>
   <book>
      <author>
         <name>John</name>
         <number>4324234</number>
      </author>
      <title>New Book</title>
      <isbn>dsdaassda</isbn>
   </book>
   <book>...</book>
   <book>...</book>
</list>

Ответы:


300

Почти готово. В вашем предикате вы хотите относительный путь, поэтому измените

./book[/author/name = 'John'] 

либо

./book[author/name = 'John'] 

или

./book[./author/name = 'John'] 

и вы будете соответствовать своей стихии. Ваш текущий предикат возвращается в корень документа для поиска author.


1
Без .меня не сработало (нужно ./author/name)
MichaelChirico

Можно ли использовать этот синтаксис в функции? Например, как реализовать что-то вроде ./book[contains(author/name, "John")]?
Просто ученик

1
@OgrishMan новые вопросы должны идти в новый вопрос , но до этого я просто попробую! Кстати, обычно вы хотите использовать одинарные кавычки, 'а не двойные "для строковых литералов в xpath.
AakashM
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.