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.

Antworten:


241

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

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

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


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)]

1

Verwenden Sie boolean functionwie unten:

//a[(contains(@id, 'xx'))=false]
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.