实例 1

基本的XPath语法类似于在一个文件系统中定位文件,如果路径以斜线 / 开始, 那么该路径就表示到一个元素的绝对路径

/AAA

选择根元素AAA

      <AAA>
           <BBB/>
           <CCC/>
           <BBB/>
           <BBB/>
           <DDD>
                <BBB/>
           </DDD>
           <CCC/>
      </AAA>

/AAA/CCC

选择AAA的所有CCC子元素

      <AAA>
           <BBB/>
           <CCC/>
           <BBB/>
           <BBB/>
           <DDD>
                <BBB/>
           </DDD>
           <CCC/>
      </AAA>

/AAA/DDD/BBB

选择AAA的子元素DDD的所有子元素

      <AAA>
           <BBB/>
           <CCC/>
           <BBB/>
           <BBB/>
           <DDD>
                <BBB/>
           </DDD>
           <CCC/>
      </AAA>

实例 2

如果路径以双斜线 // 开头, 则表示选择文档中所有满足双斜线//之后规则的元素(无论层级关系)

//BBB

选择所有BBB元素

      <AAA>
           <BBB/>
           <CCC/>
           <BBB/>
           <DDD>
                <BBB/>
           </DDD>
           <CCC>
                <DDD>
                     <BBB/>
                     <BBB/>
                </DDD>
           </CCC>
      </AAA>

//DDD/BBB

选择所有父元素是DDD的BBB元素

      <AAA>
           <BBB/>
           <CCC/>
           <BBB/>
           <DDD>
                <BBB/>
           </DDD>
           <CCC>
                <DDD>
                     <BBB/>
                     <BBB/>
                </DDD>
           </CCC>
      </AAA>

实例 3

星号 * 表示选择所有由星号之前的路径所定位的元素

选择所有路径依附于/AAA/CCC/DDD的元素

      <AAA>
           <XXX>
                <DDD>
                     <BBB/>
                     <BBB/>
                     <EEE/>
                     <FFF/>
                </DDD>
           </XXX>
           <CCC>
                <DDD>
                     <BBB/>
                     <BBB/>
                     <EEE/>
                     <FFF/>
                </DDD>
           </CCC>
           <CCC>
                <BBB>
                     <BBB>
                          <BBB/>
                     </BBB>
                </BBB>
           </CCC>
      </AAA>

*/BBB

选择所有的有3个祖先元素的BBB元素

      <AAA>
           <XXX>
                <DDD>
                     <BBB/>
                     <BBB/>
                     <EEE/>
                     <FFF/>
                </DDD>
           </XXX>
           <CCC>
                <DDD>
                     <BBB/>
                     <BBB/>
                     <EEE/>
                     <FFF/>
                </DDD>
           </CCC>
           <CCC>
                <BBB>
                     <BBB>
                          <BBB/>
                     </BBB>
                </BBB>
           </CCC>
      </AAA>

//*

选择所有元素

      <AAA>
           <XXX>
                <DDD>
                     <BBB/>
                     <BBB/>
                     <EEE/>
                     <FFF/>
                </DDD>
           </XXX>
           <CCC>
                <DDD>
                     <BBB/>
                     <BBB/>
                     <EEE/>
                     <FFF/>
                </DDD>
           </CCC>
           <CCC>
                <BBB>
                     <BBB>
                          <BBB/>
                     </BBB>
                </BBB>
           </CCC>
      </AAA>

实例 4

方块号里的表达式可以进一步的指定元素, 其中数字表示元素在选择集里的位置, 而last()函数则表示选择集中的最后一个元素.

/AAA/BBB[1]

选择AAA的第一个BBB子元素

      <AAA>
           <BBB/>
           <BBB/>
           <BBB/>
           <BBB/>
      </AAA>

/AAA/BBB[last()]

选择AAA的最后一个BBB子元素

      <AAA>
           <BBB/>
           <BBB/>
           <BBB/>
           <BBB/>
      </AAA>

实例 5

属性通过前缀 @ 来指定

//@id

选择所有的id属性

      <AAA>
           <BBB id = "b1"/>
           <BBB id = "b2"/>
           <BBB name = "bbb"/>
           <BBB/>
      </AAA>

//BBB[@id]

选择有id属性的BBB元素

      <AAA>
           <BBB id = "b1"/>
           <BBB id = "b2"/>
           <BBB name = "bbb"/>
           <BBB/>
      </AAA>

//BBB[@name]

选择有name属性的BBB元素

      <AAA>
           <BBB id = "b1"/>
           <BBB id = "b2"/>
           <BBB name = "bbb"/>
           <BBB/>
      </AAA>

//BBB[@*]

选择有任意属性的BBB元素

      <AAA>
           <BBB id = "b1"/>
           <BBB id = "b2"/>
           <BBB name = "bbb"/>
           <BBB/>
      </AAA>

//BBB[not(@*)]

选择没有属性的BBB元素

      <AAA>
           <BBB id = "b1"/>
           <BBB id = "b2"/>
           <BBB name = "bbb"/>
           <BBB/>
      </AAA>

实例 6

属性的值可以被用来作为选择的准则, normalize-space函数删除了前部和尾部的空格, 并且把连续的空格串替换为一个单一的空格

//BBB[@id='b1']

选择含有属性id且其值为'b1'的BBB元素

      <AAA>
           <BBB id = "b1"/>
           <BBB name = " bbb "/>
           <BBB name = "bbb"/>
      </AAA>

//BBB[@name='bbb']

选择含有属性name且其值为'bbb'的BBB元素

      <AAA>
           <BBB id = "b1"/>
           <BBB name = " bbb "/>
           <BBB name = "bbb"/>
      </AAA>

//BBB[normalize-space(@name)='bbb']

选择含有属性name且其值(在用normalize-space函数去掉前后空格后)为'bbb'的BBB元素

      <AAA>
           <BBB id = "b1"/>
           <BBB name = " bbb "/>
           <BBB name = "bbb"/>
      </AAA>

转载于:https://www.cnblogs.com/odoo/p/4386694.html

XPath 元素及属性查找相关推荐

  1. python--通过xpath相对节点位置查找元素(续)

    之前写过相对父元素及下一个兄弟元素的方法. 这次补充一下xpath相对节点位置查找元素的所有方法.例子就不举了,自己可以去练练. xpath相对节点查找方法: 1.xpath('./ancestor: ...

  2. python xpath定位元素方法_python--通过xpath相对节点位置查找元素(续)

    之前写过相对父元素及下一个兄弟元素的方法. 这次补充一下xpath相对节点位置查找元素的所有方法.例子就不举了,自己可以去练练. xpath相对节点查找方法: 1.xpath('./ancestor: ...

  3. xpath元素和css选择器的定位

    我们一般进行元素定位使用xpath和css选择器 1.xpath元素定位 1.什么是xpath? XPath 是一门在 XML 文档中查找信息的语言 XPath即为XML路径语言(XML Path L ...

  4. XPATH元素定位详解

    Xpath,Css元素通用定位 一.问题: 通常情况下,元素定位使用id.name.class.text可以满足日常大部分定位需求.但是 随着自动化测试的深入,和不同框架要求,会发现上面的定位方式无法 ...

  5. jsoup 标准化html代码,Jsoup从元素抽取属性,文本和HTML

    在解析获得一个Document实例对象,并查找到一些元素之后,你希望取得在这些元素中的数据.要取得一个属性的值,可以使用Node.attr(String key) 方法 对于一个元素中的文本,可以使用 ...

  6. html元素data属性设置变量,HTML5 自定义属性 data-* 和 jQuery.data 详解

    编辑注:HTML中使用data-xx="xx"开头标记的属性到底有什么用,直接使用xx="xx"不是更简单吗?其实data-xx是HTML5的一个属性,支持通过 ...

  7. java 递归遍历对象所有属性_Java学习之Xml系列二:xml按条件查询、xml递归遍历所有元素和属性...

    xml中加入了几条,为了方便查询时作为示例. 话不多说见代码注释: DTD文件:SwordTypeDefinition.dtd XML文件:SwordLib.xml SwordLibrary SYST ...

  8. Html5不可见标签,及标签属性(元素对象属性) a href target name id 相对路径

    标签属性分类(元素对象属性) 不可见标签与可见标签: <head></head>        属于不可见标签, 里面的内容一般用于css还有全局的一些变量,声明等. 而且如果 ...

  9. svg常用元素和属性

    1. 介绍 SVG 是一种基于 XML 语法的图像格式,全称是可缩放矢量图(Scalable Vector Graphics).其可以直接被插入到网页 DOM 中,甚至作为CSS背景属性等,且无论放大 ...

  10. Java使用Jsoup爬虫获取网站内容(三)获取元素内容属性的方法

    介绍 我们可以通过Jsoup来获取一个Document对象,然后通过对Document对象进行解析来获取元素对象,最后通过元素对象的一些方法来获取元素的属性名称,属性值以及文本内容. 代码 附上获取方 ...

最新文章

  1. 【PC工具】U盘数据加密工具,windows自带U盘文件加密工具体验,测试加密时间...
  2. python实现条件匹配_python3 re如何匹配满足条件的选项?
  3. 粒子群算法求解带约束优化问题 源码实现
  4. wxWidgets:wxDialog类用法
  5. android 暂停其他app的声音_【一万个APP】第二十二期潮汐
  6. 各大主流.Net的IOC框架性能测试比较
  7. ajax获得excel文件流在前端打开_主流前端技术讲解,面试必考!
  8. ios html gif 显示,iOS gif图显示问题
  9. 【零基础学Java】—final关键字与四种用法(二十九)
  10. FluentValidation:一个非常受欢迎的,用于构建强类型验证规则的.NET 库
  11. python自动化_Python 接口自动化
  12. 计算机硕士系统毕业论文答辩ppt,计算机硕士论文答辩ppt
  13. [CTF]RAR加密原理
  14. C语言实现矩阵卷积运算
  15. leaflet 加载海量点位,点击marker 查看详情功能
  16. Check Point R80.40 防火墙
  17. 什么是差模干扰和共模干扰?
  18. 送给佳佳同学的礼物:测试流程及并行测试介绍
  19. 木子-前端-ajax传值与接收最简单的方式
  20. [转] 下班后的九种最佳放松方法

热门文章

  1. java.io.NotSerializableException: org.apache.kafka.clients.consumer.ConsumerRecord
  2. “最快3个月复制支付宝的核心能力” 解密蚂蚁金服bPaaS
  3. PL/SQL数据类型
  4. 游戏服务端引擎(kbengine完整代码+demo源码)
  5. PHP程序员面临的成长瓶颈
  6. PsExec:一个非常实用的【远程运行】工具
  7. WSUS全攻略之二 :安装WSUS
  8. dcopserver出错解决办法
  9. 特殊的网络环境下的故障处理
  10. js 自定义 $ 选择器