2009-09-28 92 views
3

任何人都可以告訴我它是否可以從此html片段中僅選擇div 2a和2b? 問題是div不是h4元素的子元素,所以xpath查詢應該像「獲取位於h4 ='Two'和h4之間的h4'''h'='Two' 請注意我希望查詢是動態的和u告訴她開始元素(H4 =「兩課」)和結束元素(任何H4),然後在其上過濾得到的元素。Xpath獲取介於2個元素之間的元素

<h4>One</h4> 
<div>1a</div> 
<div>1b</div> 
<div>1c</div> 
<h4>Two</h4> 
<div>2a</div> 
<div>2b</div> 
<h4>Three</h4> 
<div>3a</div> 
<div>3b</div> 
<div>3c</div> 
+2

XPath 1.0 or 2.0? – 2009-09-28 21:10:27

回答

9
div[preceding-sibling::h4[1] = 'Two'] 
+0

我認爲這將得到元素3a,3b,3c 我只需要元素2a和2b 也是什麼[1]在h4 [1]意味着什麼? – Karim 2009-09-28 21:29:18

+3

'prior-sibling :: h4 [1]'表示在'h4'之前的_first_。因此,對於3a/3b/3c,它將是'

三個

',這就是爲什麼它們不會出現在結果中。還要注意,這個查詢還將選擇節點「在最後」 - 即那些在「

」之前的節點,但是之後沒有。如果你想檢查一下,那麼在過濾器中加入'[...和following-sibling :: h4]'應該可以做到。 – 2009-09-28 21:41:21

5
div[preceding-sibling::h4='Two' and following-sibling::h4='Three'] 
+1

這將工作,但我需要它是通用的。 我的意思是它確定前面的兄弟是由文本'兩' 搜索,但我需要以下s步是任何結局

和沒有過濾的文字 – Karim 2009-09-28 21:31:48