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

时间:2013-09-19 23:32:26

标签: html regex 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)]")

1 个答案:

答案 0 :(得分:2)

您的XPath表达式正在选择所有<div/>元素,这些元素不是<div/>元素,因此它永远不会返回任何值。选择“发布”后,您需要一个轴步骤 - <div/>

选择所有子节点,但排除那些具有本地名称(省略名称空间)“div”和类属性“quoe”的子节点。

//div[@class='post']/node()[not(local-name() = 'div' and @class='quote')]

您也可以使用self::div代替本地名称测试。