jquery - XPath:如何在节点集中选择一定范围的节点?

标签 jquery xml 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]" , 但它失败了。我猜如果每次 "//div/p[@class='p1']"得到一个节点,它的position为0,所以我得不到position>=2和position<4的节点,所以结果是没有。但是xpath怎么写呢?

最佳答案

你猜对了。

The ([]) has a higher precedence (priority) than (// and /). [For Reference]

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

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

关于jquery - XPath:如何在节点集中选择一定范围的节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22214071/

相关文章:

javascript - 间隔 500 毫秒切换 div 的显示

javascript - 幻灯片中的文本未正确排列。见 fiddle

java - 向 JAXB 元素添加属性

c++ - 使用 boost 解析嵌套的 xml

xml - 使用xsl修改xml节点值或属性值而不指定

xml - 如何使用 XSL 检查 XML 文件中是否存在属性

xslt - XPATH是否有任何类似SQL“IN”的内容?

javascript - Zurb Foundation 顶部栏根本不工作

javascript - 触发与 html 分开的表行的表更新 JavaScript 函数?

c# - 如何从 XmlElement 或 XPathNavigator 获取行号