2014-03-06 163 views
3

我想選擇節點集中的一系列節點。我試過了,但我無法得到結果。XPath:如何選擇節點集中的一系列節點?

的example.xml

<div> 
    <p class="p1">a</p> 
    <p class="p2">b</p> 
    <p class="p3">c</p> 
</div> 
<div> 
    <p class="p1">aa</p> 
    <p class="p2">bb</p> 
    <p class="p3">cc</p> 
</div> 
<div> 
    <p class="p1">aaa</p> 
    <p class="p2">bbb</p> 
    <p class="p3">ccc</p> 
</div> 
<div> 
    <p class="p1">aaaa</p> 
    <p class="p2">bbbb</p> 
    <p class="p3">cccc</p> 
</div> 

我想獲得第二至第三p節點(有class="p1"),我寫的XPath:
"//div/p[@class='p1'][position()>=2 and position()<4]",但它failed.I猜想,如果每時間"//div/p[@class='p1']"得到一個節點,它的位置是0,所以我不能得到一個節點,該節點的位置> = 2和位置< 4,所以結果是none.But我怎麼寫xpath?

回答

4

你的猜測是關於正確的。

的([])具有比(///)更高的優先級(優先級)。 [For Reference]

所以你需要括號內的位置過濾器之前包裹的XPath如下:

(//div/p[@class='p1'])[position()>=2 and position()<4] 
+1

感謝,它運作良好。 – tao4yu