Comment utiliser «non» dans xpath?


164

Je veux écrire quelque chose du genre:

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

(ce qui signifie que tous les liens dont l'attribut 'id' ne contient pas la chaîne 'xx')

Je ne trouve pas la bonne syntaxe.

Réponses:


241

not () est une fonction dans xpath (par opposition à un opérateur), donc

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

y a-t-il un moyen de dire saisir toutes les balises <p> mais pas la balise <a> à l'intérieur? imaginez quelque chose comme <p> texte texte <a class="x"> TEXT </a> texte texte </p>. je veux tout le texte en p mais pas le TEXTE en a. est-ce possible avec XPath? Ce n'est pas exactement mon cas, c'est un peu plus compliqué que ça mais c'est plus ou moins pareil.
— Ali le


13

Aucune de ces réponses n'a fonctionné pour moi pour python. J'ai résolu par ça

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

Vous pouvez également utiliser ou conditionner dans votre xpath par |opérateur. Tel que

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

Parfois, nous voulons un élément qui n'a pas de classe. Alors tu peux faire comme

a[not(@class)]

1

Utilisez boolean functioncomme ci-dessous:

//a[(contains(@id, 'xx'))=false]
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.