XPath để chọn phần tử dựa trên giá trị con


208

Cố gắng chọn một yếu tố dựa trên giá trị của một trong số đó là trẻ em

Suy nghĩ sau đây nhưng không hoạt động, đánh giá cao bất kỳ trợ giúp, cảm ơn

./book[/author/name = 'John'] hoặc là

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

Muốn tất cả các cuốn sách mà tên tác giả = 'John'

Tập tin Xml

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

Câu trả lời:


300

Gần đến rồi. Trong vị ngữ của bạn, bạn muốn có một đường dẫn tương đối , vì vậy hãy thay đổi

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

để một trong hai

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

hoặc là

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

và bạn sẽ phù hợp với yếu tố của bạn. Vị ngữ hiện tại của bạn quay trở lại thư mục gốc của tài liệu để tìm kiếm một author.


1
Không .làm việc cho tôi (cần thiết ./author/name)
MichaelChirico

Có thể sử dụng cú pháp này trong một chức năng? Ví dụ, làm thế nào để thực hiện một cái gì đó như ./book[contains(author/name, "John")]?
Chỉ là người học

1
@OgrishMan các câu hỏi mới sẽ xuất hiện trong Câu hỏi mới , nhưng trước đó tôi chỉ cần thử nó! Nói chung, bạn muốn có dấu ngoặc đơn 'thay vì dấu ngoặc kép "cho chuỗi ký tự trong xpath.
AakashM
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.