我有一堆<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)]")
答案 0 :(得分:2)
您的XPath表达式正在选择所有<div/>
元素,这些元素不是<div/>
元素,因此它永远不会返回任何值。选择“发布”后,您需要一个轴步骤 - <div/>
。
选择所有子节点,但排除那些具有本地名称(省略名称空间)“div”和类属性“quoe”的子节点。
//div[@class='post']/node()[not(local-name() = 'div' and @class='quote')]
您也可以使用self::div
代替本地名称测试。