xpath选择所有text()但不选择特定的tag / class属性

时间:2014-10-20 02:58:32

标签: xpath

我想问一个问题:

结构如下:

<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()

结合使用

请教我谢谢

2 个答案:

答案 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