XPath per selezionare l'elemento in base al valore figlio del bambino


208

Prova di selezionare un elemento in base al valore di uno dei suoi bambini

Pensando a quanto segue ma non funziona, apprezzo qualsiasi aiuto, grazie

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

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

Vuoi tutti i libri in cui il nome dell'autore = 'John'

File XML

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

Risposte:


300

Quasi lì. Nel tuo predicato, vuoi un percorso relativo , quindi cambia

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

per entrambi

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

o

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

e abbinerai il tuo elemento. Il tuo predicato corrente torna alla radice del documento per cercare un author.


1
Senza .non ha funzionato per me (necessario ./author/name)
MichaelChirico,

È possibile utilizzare questa sintassi in una funzione? Ad esempio, come implementare qualcosa come ./book[contains(author/name, "John")]?
Solo uno studente il

1
@OgrishMan nuove domande dovrebbero andare in Nuova domanda , ma prima ci proverei! In genere si desidera tra virgolette singole 'anziché doppie virgolette "per letterali stringa in xpath.
AakashM,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.