XPath怎么选择在文档中位置为奇数或偶数的节点

幻夢星雲
发布: 2025-12-12 21:07:33
原创
768人浏览过
XPath中用position() mod 2判断节点奇偶:加括号(//Xxx)[...]实现全文统一编号,不加则按父节点内独立计数;position()从1开始,奇数为mod 2 = 1,XPath 1.0必须用mod而非%。

xpath怎么选择在文档中位置为奇数或偶数的节点

XPath 中可以通过 position() 函数配合取模运算(mod)来选择位置为奇数或偶数的节点,但要注意:**position() 是相对当前上下文节点列表的位置,不是全局文档序号**,且只在谓词(方括号 [])中有效。

选择奇数位置的节点(第 1、3、5… 个)

使用 position() mod 2 = 1

    <li> //div/p[position() mod 2 = 1] → 选中每个 <div> 下的第 1、3、5… 个 <code><p></p> <li> (//li)[position() mod 2 = 1] → 注意括号!先取全部 <li> 节点为一个序列,再取其中奇数位(整个文档中第 1、3、5… 个 <li>

    选择偶数位置的节点(第 2、4、6… 个)

    position() mod 2 = 0

    Songtell
    Songtell

    Songtell是第一个人工智能生成的歌曲含义库

    Songtell 164
    查看详情 Songtell
      <li> //tr/td[position() mod 2 = 0] → 每行中第 2、4、6… 个单元格 <li> (//item)[position() mod 2 = 0] → 整个文档中所有 <item></item> 的第 2、4、6… 个

    关键细节和常见误区

    ⚠️ 注意以下几点,避免结果不符合预期:

      <li>没加括号时,//div/p[position() mod 2 = 1] 是「每个
      内部独立计数」,不是全文统一编号 <li>想按全文顺序筛选,必须先用括号生成完整节点集:(//Xxx)[...] <li>position() 从 1 开始计数(不是 0),所以奇数是 mod 2 = 1,不是 = 0 <li>在 XPath 1.0(主流浏览器和多数库默认)中,不支持 % 符号,必须用 mod

      实用小技巧:隔行变色或抽样提取

      例如给表格奇数行加样式(CSS 不适用,但可用于 XSLT 或爬虫逻辑):

        <li>XPath 提取奇数行内容:(//table//tr)[position() mod 2 = 1]/td[1]/text() <li>跳过第一行(表头),取后续奇数行(即第 3、5、7… 行):(//tr)[position() > 1 and position() mod 2 = 0]

      基本上就这些。核心就是括号控制作用域 + position() mod 2 判断奇偶,不复杂但容易忽略括号的影响。

以上就是XPath怎么选择在文档中位置为奇数或偶数的节点的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号