Bagaimana cara menggunakan "tidak" di xpath?

164

Saya ingin menulis semacam itu:

//a[not contains(@id, 'xx')]

(artinya semua tautan yang ada atribut 'id' tidak mengandung string 'xx')

Saya tidak dapat menemukan sintaks yang tepat.

Orang
sumber

Jawaban:

241

not () adalah fungsi dalam xpath (sebagai lawan dari operator), jadi

//a[not(contains(@id, 'xx'))]
James Sulak
sumber
apakah ada cara untuk mengatakan ambil semua tag <p> tetapi bukan tag <a> di dalamnya? bayangkan sesuatu seperti teks teks <p> <a class="x"> TEXT </a> teks </p>. saya ingin semua teks dalam p tetapi bukan TEKS dalam. apakah itu mungkin dengan XPath? Ini bukan kasus saya, ini sedikit lebih rumit dari itu tetapi kurang lebih sama.
Ali
40

Anda dapat menggunakan not(expression)fungsi

atau

expression != true()
Abdelhameed Mahmoud
sumber
13

Tidak satu pun dari jawaban ini yang berfungsi untuk saya untuk python. Saya diselesaikan dengan ini

a[not(@id='XX')]

Anda juga dapat menggunakan atau mengkondisikan xpath oleh |operator Anda. Seperti

a[not(@id='XX')]|a[not(@class='YY')]

Terkadang kita menginginkan elemen yang tidak memiliki kelas. Jadi kamu bisa suka

a[not(@class)]
Harun ERGUL
sumber
1

Gunakan boolean functionseperti di bawah ini:

//a[(contains(@id, 'xx'))=false]
frianH
sumber