Wie verwende ich "nicht" in xpath?

164

Ich möchte so etwas schreiben:

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

(bedeutet, dass alle Links, deren 'id'-Attribut nicht die Zeichenfolge' xx 'enthält)

Ich kann die richtige Syntax nicht finden.

Kerl
quelle

Antworten:

241

not () ist eine Funktion in xpath (im Gegensatz zu einem Operator)

//a[not(contains(@id, 'xx'))]
James Sulak
quelle
Gibt es eine Möglichkeit zu sagen, alle <p> -Tags zu greifen, aber nicht das <a> -Tag in ihnen? Stellen Sie sich so etwas wie <p> Texttext <a class="x"> TEXT </a> Texttext </ p> vor. Ich möchte den gesamten Text in p, aber nicht den Text in a. ist das mit XPath möglich? Dies ist nicht genau mein Fall, es ist etwas komplizierter, aber es ist mehr oder weniger dasselbe.
Ali
40

Sie können die not(expression)Funktion verwenden

oder

expression != true()
Abdelhameed Mahmoud
quelle
13

Keine dieser Antworten hat bei mir für Python funktioniert. Ich habe das gelöst

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

Sie können Ihren xpath auch nach |Operator verwenden oder konditionieren . Sowie

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

Manchmal wollen wir ein Element, das keine Klasse hat. So kannst du gerne machen

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

Verwenden Sie boolean functionwie unten:

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