xpath:我们如何选择最后一个文本节点?

时间:2012-04-11 01:09:06

标签: xslt xpath lxml libxml2

如何使用xpath选择全局最后一个文本节点? 我试过这个,但它给了我文档每个上下文中的最后一个节点。

lxml.html.fromstring('1<a>2<b>3</b>4<c>5</c>6</a>').xpath('//text()[last()]')
['1', '3', '5', '6']

我可以做到这一点,但它在时间和空间上都是低效的,特别是当文档变大时。

lxml.html.fromstring('1<a>2<b>3</b>4<c>5</c>6</a>').xpath('//text()[last()]')[-1]
'6'

我尝试使用-1的索引,但这给了我一个空列表。我尝试使用一些反向轴(这样我可以用1来索引),但我无法让它们在全局环境中工作。

1 个答案:

答案 0 :(得分:11)

使用

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

这是常见问题。

解释

XPath伪运算符//的优先级(优先级)低于[]运算符,后者与之前的节点测试绑定更强。

与数学和各种语言一样,覆盖默认优先级的方法是使用括号。