这是我的HTML
tree$frame
我需要提取<book>
<div id="name"></div>
<span id="age"></span>
<p id="contact_number"></p>
...
...
(more attributes)
</book>
内的所有text()
,<book></book>
除p
所以我基本上需要id="contact_number"
除了//book//text()
如何在单个xpath查询中执行此操作?
答案 0 :(得分:4)
如果你能以不同的方式提出要求,可能会有更好的方法。无论如何,要按照问题的方式回答问题,你可以试试这个:
//book//text()[not(ancestor::p/@id='contact_number')]
或者只是使用parent::p
代替ancestor::p
:
//book//text()[not(parent::p/@id='contact_number')]
如果您需要过滤掉空文本节点,请在最后添加[normalize-space()]
。
答案 1 :(得分:1)
尝试以下方法:
//*[not(self::p[@id = 'contact_number'])]/text()[normalize-space()]