2012-04-11 1 views
4

xpathを使用してグローバルに最後のテキストノードを選択するにはどうすればよいですか? 私はこれを試しましたが、文書のあらゆる文脈で最後のノードを与えてくれました。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で索引付けできるように)が、しかしそれらをグローバルなコンテキストで動作させることができませんでした。

答えて

11

使用

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

これはよくある質問です。

説明

のXPath擬似オペレータ//は、それに先行するノードテストに強く結合[]オペレータ、より低い優先順位(優先順位)を有します。数学では、すべての言語の場合と同様に

、デフォルトの優先度を上書きする方法は、ブラケットを使用することです。

+2

大正義のためにFAQをリンクしてください。 – bukzor

+0

確認済み: '.xpath( 'text())[last()]')' - > '['6']' – bukzor

関連する問題