我想问一个问题:
结构如下:
<div class='item'>
<div class='all'>
BY
<p>ABC</p>
<p>DEF</p>
<p>
<span class="date">19991111</span>
</p>
</div>
</div>
我想问一下如何选择所有text()
(BY ABC DEF)但不包含<span class="date">DDD</span>
(19991111)
我找到了not()
方法span[not(@class, 'date')
但不知道如何与//div[@class=item]/div[@class='all']//text()
请教我谢谢
答案 0 :(得分:2)
你可以像这样组合它们:
//div[@class=item]/div[@class='all']//text()[not(parent::span[@class='date'])]
在XPath之上选择div[@class='all']
中父span[@class='date']
未匹配的所有文本节点。
您可能还希望使用normalize-space()
过滤掉空文本节点:
//div[@class=item]/div[@class='all']//text()[not(parent::span[@class='date']) and normalize-space()]
答案 1 :(得分:0)
将descendant-or-self
轴与带有谓词{{1}}的{{1}}选择器一起使用。
例如
*
在这里演示〜http://www.xpathtester.com/xpath/405026153e7beb1847d023f2553674b7