使用XPath:如何排除嵌套元素中的文本

时间:2013-08-13 20:06:54

标签: html xml xpath nested

如果我有一些类似下面的HTML

<div class=unique_id>    
  <h1 class="parseasinTitle">
    <span> Game Title </span>
 </h1>
 Game Developer
</div>

有没有办法可以使用xpath来获取文本的“游戏开发者”部分?从搜索周围我试过:

//div[@class='unique_id' and not(self::h1/span)]

但这仍然给了我整个文本“Game Title Game Developer”。

2 个答案:

答案 0 :(得分:5)

div[@class = 'unique_id']/text()[not(normalize-space() = '')]

div[@class = 'unique_id']/text()[last()]

取决于具体情况。

请注意,您仍需要修剪生成的文本节点。

答案 1 :(得分:0)

方括号中的条件(“谓词”)指定节点的条件。 div节点不是同时h1,因此否定是否满足。但是,如果您使用child代替self,这可能是您最初的意图,那么您将无法获得预期的文本 - 您将无法获得任何内容,因为这意味着“搜索具有unique_id tah的div不会有一个h1 / span孩子“。

如果需要文本,请指定text():

//div/text()[last()]