Xpath - 选择所有具有属性的子节点,排除子节点



我有一堆<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 而不是本地名称测试。