XPATH - 选择节点范围

时间:2012-04-23 22:54:30

标签: php xpath

我有以下代码:

<div id="mydiv">
    <h1>Some title</h1>
    <p>don't select me</p>
    <p>select me 1</p>
    <p>select me 2</p>
    <p>select me 3</p>
    <p>don't select me</p>
</div>

我需要选择p [2]到p [4]。

尝试使用此代码并且无效:

'.//*[@id="mydiv"]/p[preceding-sibling::p[4] and following-sibling::p[2]]'

3 个答案:

答案 0 :(得分:8)

您可以尝试:

'//*[@id='mydiv']/p[position()>1 and position()<5]'

或者,您的初始代码可以更改为:

'//*[@id="mydiv"]/p[preceding-sibling::p and following-sibling::p]'

左,选择具有前后p个节点的所有p(即p [2]到p [4])。

答案 1 :(得分:1)

XPATH也可以用以下格式编写: -

//p[position()>1 and position()<5]

//p[position()>=2 and position()<=4]

结果:

select me 1
select me 2
select me 3

答案 2 :(得分:0)

如果«p»的最大数量大于5,或许您需要使用此项

//p[(position() idiv 2) eq 1] ---选择ODD节点(基于位置编号)

//p[(position() idiv 2) eq 0] ---选择偶数节点(基于位置编号)