我有一堆<div class="post">
节点,我需要选择每个节点的内容,同时排除一个名为<div class="quote">
的子节点。
例:
<div class="post">
<div class="quote"><a href="{url}">some text</div>
some content<br>more content
</div>
在此示例中,选择"some content<br>more content"
并排除<div class="quote">..</div>
我试过这个,不起作用:
@doc.xpath("//div[@class='post'][not(self::div)]")
XPath 表达式正在选择所有不是<div/>
元素<div/>
元素,因此它永远不会返回任何值。选择"帖子"后,您需要一个轴步长 - <div/>
.
选择所有子节点,但排除具有本地名称(省略命名空间)"div"和类属性"quoe"的子节点。
//div[@class='post']/node()[not(local-name() = 'div' and @class='quote')]
还可以使用 self::div
而不是本地名称测试。