XPATH - 获取除特定节点之外的所有内部节点

时间:2015-08-06 08:59:03

标签: xpath

这是我的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查询中执行此操作?

2 个答案:

答案 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()]