XPath untuk memilih elemen berdasarkan nilai childs child


208

Mencoba memilih elemen berdasarkan nilai salah satu dari anak-anak itu anak-anak

Pikirkan hal-hal berikut tetapi tidak berhasil, hargai bantuan apa pun, terima kasih

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

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

Ingin semua buku yang nama pengarangnya = '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>

Jawaban:


300

Hampir sampai. Dalam predikat Anda, Anda menginginkan jalur relatif , jadi ubah

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

untuk salah satu

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

atau

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

dan Anda akan mencocokkan elemen Anda. Predikat Anda saat ini kembali ke akar dokumen untuk mencari author.


1
Tanpa .tidak bekerja untuk saya (diperlukan ./author/name)
MichaelChirico

Apakah mungkin untuk menggunakan sintaks ini dalam suatu fungsi? Misalnya, bagaimana cara mengimplementasikan sesuatu seperti ./book[contains(author/name, "John")]?
Baru belajar

1
@OgrishMan pertanyaan baru harus masuk dalam Pertanyaan Baru , tetapi sebelum itu saya baru saja mencobanya! Secara umum, Anda menginginkan tanda kutip tunggal 'daripada tanda kutip ganda "untuk string literal di xpath.
AakashM
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.