jon*_*h_w 2 css perl xpath selector xml-libxml
在以下 HTML 片段中:
<div><p class="a b c"></p> <p class="a c"></p> <p class="d"></p> </div>
我只想使用选择器选择第二个p
元素(带a
类和不带b
类)not
,如下所示:
p.a:not(.b)
xpath对应的是
.//p[contains(concat(' ', normalize-space(@class), ' '), ' a ')][not(self::*[contains(concat(' ', normalize-space(@class), ' '), ' b ')])]
.
但是当我使用该 xpath 表达式时,它无法定位该元素。
还有什么可以用来实现not
选择器的效果吗?
更新:似乎我犯了一个错误,因为p.a:not(.b)
它的 xpath 对应物似乎对XML::LibXML
.
它没有用,因为我if
弄错了一个条件......
要获得您想要的东西,只需使用此 XPath:
//p[@class[not(contains(.,"b"))]]
Run Code Online (Sandbox Code Playgroud)
换句话说:选择具有不包含“b”的@class 属性的 ap 元素。
编辑:更具体地说(类必须包含 a 但不包含 b):
//p[@class[contains(.,"a")] and not(@class[contains(.,"b")])]
Run Code Online (Sandbox Code Playgroud)