XPath với nhiều điều kiện


156

Tôi có thể sử dụng XPath nào để chọn bất kỳ danh mục nào có thuộc tính tên được chỉ định và bất kỳ tác giả nút con nào có giá trị được chỉ định.

Tôi đã thử các biến thể khác nhau của con đường bên dưới nhưng không thành công:

//quotes/category[@name='Sport' and author="James Small"]

XML:

<?xml version="1.0" encoding="utf-8"?>
<quotes>
  <category name="Sport">
   <author>James Small<quote date="09/02/1985">Quote One</quote><quote             date="11/02/1925">Quote nine</quote></author>
  </category>
   <category name="Music">
   <author>Stephen Swann
 <quote date="04/08/1972">Quote eleven</quote></author>
  </category>
  </quotes>

Câu trả lời:


248

Thử:
//category[@name='Sport' and ./author/text()='James Small']


4
Đối với người theo dõi, thông báo lỗi "Dự kiến], nhưng được tìm thấy: &&" có nghĩa là "sử dụng từ khóa và thay vì &&" (như câu trả lời này chỉ định)
rogerdpack

31

Sử dụng :

/category[@name='Sport' and author/text()[1]='James Small']

hoặc dùng:

/category[@name='Sport' and author[starts-with(.,'James Small')]]

Đó là một quy tắc tốt để cố gắng tránh sử dụng //toán tử giả bất cứ khi nào có thể, bởi vì đánh giá của nó thường có thể rất chậm.

Cũng thế:

./somename

tương đương với:

somename

Vì vậy, nó được khuyến khích để sử dụng sau này.


14

Câu hỏi không rõ ràng, nhưng những gì tôi hiểu bạn cần phải chọn một catagory có thuộc tính name và nên có tác giả con với giá trị được chỉ định, hãy sửa cho tôi nếu tôi lo lắng

đây là một đường dẫn

//category[@name='Required value'][./author[contains(.,'Required value')]]
e.g
//category[@name='Sport'][./author[contains(.,'James Small')]]

1

Bạn có thể áp dụng nhiều điều kiện trong xpath bằng cách sử dụng và, hoặc

//input[@class='_2zrpKA _1dBPDZ' and @type='text']

//input[@class='_2zrpKA _1dBPDZ' or @type='text']

-1

Ở đây, chúng ta cũng có thể làm theo cách này:

//category [@name='category name']/author[contains(text(),'authorname')]

HOẶC LÀ

//category [@name='category name']//author[contains(text(),'authorname')]

Để tìm hiểu chi tiết về XPath, vui lòng truy cập chi tiết - selenium xpath

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.