XPath เพื่อเลือกองค์ประกอบตามค่า childs child


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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.