Come usare "non" in xpath?


164

Voglio scrivere qualcosa del genere:

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

(nel senso che tutti i collegamenti che hanno l'attributo 'id' non contengono la stringa 'xx')

Non riesco a trovare la sintassi corretta.

Risposte:


241

not () è una funzione in xpath (al contrario di un operatore), quindi

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

c'è un modo per dire afferrare tutti i tag <p> ma non il tag <a> al loro interno? immagina qualcosa di simile a <p> testo di testo <a class="x"> TESTO </a> testo di testo </p>. voglio tutto il testo in p ma non il TESTO in a. è possibile con XPath? Questo non è esattamente il mio caso, è un po 'più complicato di così, ma è più o meno lo stesso.
Ali,


13

Nessuna di queste risposte ha funzionato per me per Python. Ho risolto questo

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

Inoltre puoi usare o condizionare il tuo xpath |dall'operatore. Ad esempio

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

A volte vogliamo un elemento che non ha classe. Quindi puoi fare come

a[not(@class)]

1

Usa boolean functioncome di seguito:

//a[(contains(@id, 'xx'))=false]
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.