XPath:如何选择节点集中的一系列节点?

tao*_*4yu 3 xml jquery xpath

我想在节点集中选择一系列节点。我试过了,但我无法得到结果。

示例.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>
Run Code Online (Sandbox Code Playgroud)

我想获取第二到第三个p节点(有class="p1"),我写了xpath:,
"//div/p[@class='p1'][position()>=2 and position()<4]"但是失败了。我猜如果每次"//div/p[@class='p1']"获取一个节点,其位置为0,所以我无法获取位置>=的节点2和位置<4,所以结果是none。但是我该如何写xpath呢?

har*_*r07 7

你的猜测基本正确。

( []) 具有比 (///)更高的优先级(优先级)。[供参考]

因此,您需要在括号内的位置过滤器之前包装 XPath,如下所示:

(//div/p[@class='p1'])[position()>=2 and position()<4]
Run Code Online (Sandbox Code Playgroud)