xpathで「not」を使用する方法は?


164

私はそのようなものを書きたいです:

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

(「id」属性に「xx」という文字列が含まれていないすべてのリンクを意味します)

正しい構文が見つかりません。

回答:


241

not()は(演算子ではなく)xpathの関数なので、

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

すべての<p>タグを取得するが、その中に<a>タグを取得しないと言う方法はありますか?<p> text text <a class="x"> TEXT </a> text text </ p>のようなものを想像してみてください。私はすべてのテキストをpにしたいが、テキストをaにしたくない。XPathでそれは可能ですか?これは正確には私の場合ではなく、それよりも少し複雑ですが、多かれ少なかれ同じです。
アリ


13

これらの答えはどれも私にとってpythonにはうまくいきませんでした。これで解決しました

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

また、xpathで|演算子を使用したり、条件付けしたりすることもできます。といった

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

クラスを持たない要素が必要な場合があります。だからあなたは

a[not(@class)]

1

boolean function以下のように使用してください:

//a[(contains(@id, 'xx'))=false]
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.