鑑於類似這樣的標記:有沒有更好的方法獲取XPath查詢結果的父節點?
<div class="foo">
<div><span class="a1"></span><a href="...">...</a></div>
<div><span class="a2"></span><a href="...">...</a></div>
<div><span class="a1"></span>some text</div>
<div><span class="a3"></span>some text</div>
</div>
現在我感興趣的是得到這些<a>
和some text
只有當相鄰span
是a1
類的。因此,在整個代碼結束時,我的結果是<a>
從第一個div
和some text
。這很容易,如果<a>
和some text
裏面span
或div
將具有class
屬性,但沒有運氣。
我現在正在做的是span
與a1
類這樣的查詢:
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]
,然後獲取其父母,做一套query()
與作爲上下文節點是父節點。這看起來遠沒有效率,所以有沒有更好的方法來做到這一點?
答案
按@MarcB answer,正確的查詢是:
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]/..
但<A>
它可能是更好的使用:
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]/../a
獲得<A>
代替它的容器。
+1的文件系統路徑的參考,這就是我怎麼樣了總是想到它,但我從來沒有聽說過這樣解釋 –
我剛纔檢查手冊之前問這個問題,但似乎我設法錯過了「..」,因爲它顯然存在。但FS參考立即清楚。謝謝。 –
是的。當我第一次跳入xpath時,我像這樣徘徊了一段時間,但是使查詢<->路徑關聯對我來說是非常適合的。 –