XPath dengan berbagai kondisi

157

XPath apa yang bisa saya gunakan untuk memilih kategori apa saja dengan atribut nama yang ditentukan dan penulis simpul anak apa pun dengan nilai yang ditentukan.

Saya telah mencoba berbagai variasi jalur di bawah ini tanpa hasil:

//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>
mjroodt
sumber

Jawaban:

248

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

Cylian
sumber
4
Untuk pengikut, pesan kesalahan "Diharapkan], tetapi ditemukan: &&" berarti "menggunakan dan kata kunci alih-alih &&" (sebagaimana ditentukan oleh jawaban ini)
rogerdpack
31

Gunakan :

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

atau gunakan:

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

Merupakan aturan yang baik untuk mencoba menghindari penggunaan //pseudo-operator bila memungkinkan, karena evaluasinya biasanya bisa sangat lambat.

Juga:

./somename

setara dengan:

somename

jadi disarankan untuk menggunakan yang terakhir.

Dimitre Novatchev
sumber
14

pertanyaan tidak jelas, tetapi apa yang saya pahami Anda harus memilih kategori yang memiliki atribut nama dan harus memiliki penulis anak dengan nilai yang ditentukan, koreksi saya jika saya bekerja

di sini adalah xpath

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

Anda dapat menerapkan beberapa kondisi di xpath menggunakan dan, atau

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

//input[@class='_2zrpKA _1dBPDZ' or @type='text']
Suman
sumber
-1

Di sini, kita juga bisa melakukan ini:

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

ATAU

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

Untuk Mempelajari XPATH secara detail, silakan kunjungi - selenium xpath secara terperinci

Avinash Pande
sumber