我有一個類似的樹的一個:使用節點選擇祖父母選擇它的後代
tr
_|_
td td
_| |_
div div
_| |_
input "foobar"
我有節點「foobar的」選中的使用:
//*[normalize-space(text())='foobar']
但我我無法選擇曾祖父母tr
並選擇了很大的孩子input
有任何建議嗎?
我有一個類似的樹的一個:使用節點選擇祖父母選擇它的後代
tr
_|_
td td
_| |_
div div
_| |_
input "foobar"
我有節點「foobar的」選中的使用:
//*[normalize-space(text())='foobar']
但我我無法選擇曾祖父母tr
並選擇了很大的孩子input
有任何建議嗎?
我有節點「foobar的」選中 使用:
//*[normalize-space(text())='foobar']
但我無法選擇偉大的 祖父母tr和選擇偉大的 孩子「foobar」與它。
我想你想要選擇其字符串值(標準化後)爲「foobar」的元素,從頂部元素tr
開始。
這裏是一個XPath表達式從頂部elemet tr
「開始」,並選擇想要的元素:
/tr//*[normalize-space()='foobar']
如果您需要選擇文本節點本身(而不是其元素的父):
/tr//text()[normalize-space()='foobar']
如果你想避免//
縮寫的昂貴和緩慢的評價(因爲你知道文檔結構),用這句話:
/tr/td/div[normalize-space()='foobar']
甚至:
/tr/td[2]/div
更新:
現在OP改變了他的問題,並希望從已標準化的字符串值 'foobar' 命令的div
選擇input
元素。
這裏是一個XPath表達式恰好選擇這個:
../..//input
或
../../td[1]/div/input
請注意:如果這些表達式沒有選擇任何節點,它是最有可能該文檔有一個默認的命名空間 - 搜索XPath默認命名空間 - 這個問題有很多很好的答案 - 在SO和互聯網上。
這個XPath表達式每選擇一個元件具有空白正常化後後代文本節點等於 「foobar的」:
//*[.//text()[normalize-space()='foobar']]
好問題,+1。查看我的答案,瞭解可以使用的詳盡XPath表達式集。 :) – 2011-04-13 04:35:19
準確地說,我正在尋找。 +1。 – anujin 2013-10-11 08:09:00