XPath最通俗的教程(ZZ)
实例 1
基本的XPath语法类似于在一个文件系统中定位文件,如果路径以斜线 / 开始, 那么该路径就表示到一个元素的绝对路径
/AAA |
选择根元素AAA |
|
/AAA/CCC |
选择AAA的所有CCC子元素 |
|
/AAA/DDD/BBB |
选择AAA的子元素DDD的所有子元素 |
|
实例 2
如果路径以双斜线 // 开头, 则表示选择文档中所有满足双斜线//之后规则的元素(无论层级关系)
//BBB |
选择所有BBB元素 |
|
//DDD/BBB |
选择所有父元素是DDD的BBB元素 |
|
实例 3
星号 * 表示选择所有由星号之前的路径所定位的元素
/AAA/CCC/DDD/* |
选择所有路径依附于/AAA/CCC/DDD的元素 |
|
/*/*/*/BBB |
选择所有的有3个祖先元素的BBB元素 |
|
//* |
选择所有元素 |
|
实例 4
方块号里的表达式可以进一步的指定元素, 其中数字表示元素在选择集里的位置, 而last()函数则表示选择集中的最后一个元素.
/AAA/BBB[1] |
选择AAA的第一个BBB子元素 |
|
/AAA/BBB[last()] |
选择AAA的最后一个BBB子元素 |
|
实例 5
//@id |
选择所有的id属性 |
|
//BBB[@id] |
选择有id属性的BBB元素 |
|
//BBB[@name] |
选择有name属性的BBB元素 |
|
//BBB[@*] |
选择有任意属性的BBB元素 |
|
//BBB[not(@*)] |
选择没有属性的BBB元素 |
|
实例 6
属性的值可以被用来作为选择的准则, normalize-space函数删除了前部和尾部的空格, 并且把连续的空格串替换为一个单一的空格
//BBB[@id='b1'] |
选择含有属性id且其值为'b1'的BBB元素 |
|
//BBB[@name='bbb'] |
选择含有属性name且其值为'bbb'的BBB元素 |
|
//BBB[normalize-space(@name)='bbb'] |
选择含有属性name且其值(在用normalize-space函数去掉前后空格后)为'bbb'的BBB元素 |
|
实例 7
count()函数可以计数所选元素的个数
//*[count(BBB)=2] |
选择含有2个BBB子元素的元素 |
|
//*[count(*)=2] |
选择含有2个子元素的元素 |
|
//*[count(*)=3] |
选择含有3个子元素的元素 |
|
实例 8
name()函数返回元素的名称, start-with()函数在该函数的第一个参数字符串是以第二个参数字符开始的情况返回true, contains()函数当其第一个字符串参数包含有第二个字符串参数时返回true.
//*[name()='BBB'] |
选择所有名称为BBB的元素(这里等价于//BBB) |
|
//*[starts-with(name(),'B')] |
选择所有名称以"B"起始的元素 |
|
//*[contains(name(),'C')] |
选择所有名称包含"C"的元素 |
|
实例 10
多个路径可以用分隔符 | 合并在一起
//CCC | //BBB |
选择所有的CCC和BBB元素 |
|
/AAA/EEE | //BBB |
选择所有的BBB元素和所有是AAA的子元素的EEE元素 |
|
/AAA/EEE | //DDD/CCC | /AAA | //BBB |
可以合并的路径数目没有限制 |
|
实例 11
child轴(axis)包含上下文节点的子元素, 作为默认的轴,可以忽略不写.
/AAA |
等价于 /child::AAA |
|
/child::AAA |
等价于/AAA |
|
/AAA/BBB |
等价于/child::AAA/child::BBB |
|
/child::AAA/child::BBB |
等价于/AAA/BBB |
|
/child::AAA/BBB |
二者都可以被合并 |
|
实例 12
descendant (后代)轴包含上下文节点的后代,一个后代是指子节点或者子节点的子节点等等, 因此descendant轴不会包含属性和命名空间节点.
/descendant::* |
选择文档根元素的所有后代.即所有的元素被选择 |
|
/AAA/BBB/descendant::* |
选择/AAA/BBB的所有后代元素 |
|
//CCC/descendant::* |
选择在祖先元素中有CCC的所有元素 |
|
//CCC/descendant::DDD |
选择所有以CCC为祖先元素的DDD元素 |
|
实例 13
parent轴(axis)包含上下文节点的父节点, 如果有父节点的话
//DDD/parent::* |
选择DDD元素的所有父节点 |
|
实例 14
ancestor轴(axis)包含上下节点的祖先节点, 该祖先节点由其上下文节点的父节点以及父节点的父节点等等诸如此类的节点构成,所以ancestor轴总是包含有根节点,除非上下文节点就是根节点本身.
/AAA/BBB/DDD/CCC/EEE/ancestor::* |
选择一个绝对路径上的所有节点 |
|
//FFF/ancestor::* |
选择FFF元素的祖先节点 |
|
实例 15
following-sibling轴(axis)包含上下文节点之后的所有兄弟节点
/AAA/BBB/following-sibling::* |
|
//CCC/following-sibling::* |
|
实例 16
preceding-sibling 轴(axis)包含上下文节点之前的所有兄弟节点
/AAA/XXX/preceding-sibling::* |
|
//CCC/preceding-sibling::* |
|
实例 17
following轴(axis)包含同一文档中按文档顺序位于上下文节点之后的所有节点, 除了祖先节点,属性节点和命名空间节点
/AAA/XXX/following::* |
|
//ZZZ/following::* |
|
实例 18
preceding轴(axis)包含同一文档中按文档顺序位于上下文节点之前的所有节点, 除了祖先节点,属性节点和命名空间节点
/AAA/XXX/preceding::* |
|
//GGG/preceding::* |
|
实例 19
descendant-or-self 轴(axis)包含上下文节点本身和该节点的后代节点
/AAA/XXX/descendant-or-self::* |
|
//CCC/descendant-or-self::* |
|
实例 20
ancestor-or-self 轴(axis)包含上下文节点本身和该节点的祖先节点
/AAA/XXX/DDD/EEE/ancestor-or-self::* |
|
//GGG/ancestor-or-self::* |
|
实例 21
ancestor, descendant, following, preceding 和self轴(axis)分割了XML文档(忽略属性节点和命名空间节点), 不能交迭, 而一起使用则包含所有节点
//GGG/ancestor::* |
|
//GGG/descendant::* |
|
//GGG/following::* |
|
//GGG/preceding::* |
|
//GGG/self::* |
|
//GGG/ancestor::* | //GGG/descendant::* | //GGG/following::* | //GGG/preceding::* | //GGG/self::* |
|
实例 22
div运算符做浮点除法运算, mod运算符做求余运算, floor函数返回不大于参数的最大整数(趋近于正无穷), ceiling返回不小于参数的最小整数(趋近于负无穷)
//BBB[position() mod 2 = 0 ] |
选择偶数位置的BBB元素 |
|
//BBB[ position() = floor(last() div 2 + 0.5) or position() = ceiling(last() div 2 + 0.5) ] |
选择中间的BBB元素 |
|
//CCC[ position() = floor(last() div 2 + 0.5) or position() = ceiling(last() div 2 + 0.5) ] |
选择中间的CCC元素 |
|
转载于:https://www.cnblogs.com/ipointer/archive/2005/10/20/258305.html
XPath最通俗的教程(ZZ)相关推荐
- 三阶魔方教程——ZZ解法
一.什么是ZZ解法? ZZ法是三大速拧解法之一,由波兰魔友zbigniew zborowski在2006年提出.并以他的名字缩写命名.公式量20-537条,平均还原步数在45-55之间.这种方法的优势 ...
- 《手把手教你》系列基础篇之4-python+ selenium自动化测试-xpath使用(详细教程)
简介 俗话说:磨刀不误砍柴工,因此在我们要开始写自动化脚本之前,我们先来学习和了解几个基本概念,在完全掌握了这几个概念之后,有助于我们快速上手,如何去编写自动化测试脚本. 元素,在这个教程系列,我们说 ...
- 网页结构的简介和Xpath语法的入门教程
相信很多小伙伴已经听说过Xpath,之前小编也写过一篇关于Xpath的文章,感兴趣的小伙伴可以戳这篇文章如何利用Xpath抓取京东网商品信息以及Python网络爬虫四大选择器(正则表达式.BS4.Xp ...
- Android 本地网络小说爬虫,基于 jsoup 及 xpath,Android入门教程
项目地址:smuyyh/CrawlerForReader 简介:Android 本地网络小说爬虫,基于 jsoup 及 xpath 更多:作者 提 Bug 标签: Android 本地网络小说爬 ...
- 金士顿DT 101 G2 U盘群联主控2251 MPALL v3.16.00量产教程[zz]
最近新买的金士顿DT 101 G2 U盘用老版本的群联检测工具GETinfo如GETinfo v3.2.9.2会不认识MP的版本,一般会显示为MP v 48.30.30,而使用新版本的如GETinfo ...
- xpath语法及其使用教程
一. XPATH 1. 什么是xpath? xpath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历. 2. 常 ...
- notepad++ :正则表达式系统教程(zz)
索引 1. 引子 2. 正则表达式的历史 3. 正则表达式定义 3.1 普通字符 3.2 非打印字符 3.3 特殊字符 3.4 限定符 3.5 定位符 3.6 选择 3.7 后向引用 4. 各种操作符 ...
- AJAX基础教程zz
这篇文章将带您浏览整个AJAX的基本概貌,并展示两个简单的例子让您轻松上路. 什么是 AJAX? AJAX (异步 JavaScript 和 XML) 是个新产生的术语,专为描述JavaScrip ...
- 经验分享:CSS浮动(float,clear)通俗讲解
很早以前就接触过CSS,但对于浮动始终非常迷惑,可能是自身理解能力差,也可能是没能遇到一篇通俗的教程. 前些天小菜终于搞懂了浮动的基本原理,迫不及待的分享给大家. 写在前面的话: 由于CSS内容比较多 ...
最新文章
- 15.linux-LCD层次分析(详解)
- 我是这样给阿里面试官吹 ConcurrentHashMap的
- 编程中检查IIS7组件的安装情况
- 本地服务器模板网站怎么安装,本地服务器怎样安装帝国CMS模版网站
- 速查100 WebServers
- Linux移植遇到问题记录
- 从Eclipse使用team provider上传UI5 application到server的注意事项
- 一次执行truncate触发ORA-02266解决过程
- linux数据库能看到系统执行了哪些命令,DB2数据库在linux操作系统的指令有哪些?...
- pyjion python3.6_[新闻] CPython / 微软 Pyjion / IBM Python+OMR
- 小型微型计算机系统2006,小型微型计算机系统杂志
- 关于LeNet-5卷积神经网络 S2层与C3层连接的参数计算的思考???
- Android模拟器的安装、连接和操作
- zynq获取程序运行时间
- python 作物识别_20行Python代码开发植物识别 app
- 等级测评——定级、等级划分及测评时间
- Elastic:Elastic Stack 7.6.0 重磅发布
- ROS学习:cv_bridge与opencv版本冲突三种解决方案
- 九型人格之5号适合的职业(裴宇晶)
- 细数二三四五“爆雷”简史:布局金融7年一场空,陈于冰贯穿始终
热门文章
- Mybatis.cfg配置标签的顺序问题
- 【算法】栈实现综合表达式计算
- 40-400-044-运维-优化-MySQL order by 优化
- 【Clickhouse】Clickhouse PRIMARY KEY, CONSTRAINT, identifier, column declaration, INDEX
- 95-190-032-源码-window-CountWindow
- 【Kafka】[Group Metadata Manager on Broker xx]: Removed 0 expired offsets in kafka.coordinator.GroupMe
- 18-elasticsearch集群健康为黄色
- mysql 什么时候用单列索引?什么使用用联合索引?
- 云计算入门科普系列:文件管理
- 【数据库】数据库基础