5

如何使用 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 进行索引),但我无法让它们在全局环境中工作。

4

1 回答 1

12

使用

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

这是一个常见问题解答。

说明

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

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

于 2012-04-11T01:53:37.247 回答