0

0

Xpath定位的总结

高洛峰

高洛峰

发布时间:2017-03-08 11:51:47

|

4217人浏览过

|

来源于php中文网

原创

1.相对定位与绝对定位

//表示相对定位,对于经常发生变化的页面或者节点要用相对定位进行查找

Xpath定位的总结

/表示绝对定位,一成不变的时候可以用绝对定位进行查找

 

2.节点

顶级节点:bookstore

Xpath定位的总结当前节点.

如果当前节点有多个则匹配多个

Xpath定位的总结 

如果当前节点只有1个,则匹配1

 Xpath定位的总结

选取当前节点的节点..

对于html/body下的p来说它的父节点就是body,这是用绝对路径,表示必须从html下找到body再找到p,然后匹配p的父节点。

Xpath定位的总结 

如果用相对路径来找父节点,可以看到从p开始就不考虑它的绝对位置,也就是说从body开始 符合父节点条件的所有元素都会被找出来。

 

查找当前节点下的所有元素://book[1]/..

这个是节点索引+父节点的方式

 Xpath定位的总结

3.通过标签定位元素

//book:找到所有名为book的标签

 Xpath定位的总结

再来一个百度的

 Xpath定位的总结

4.属性定位

1.定位属性为category 的元素

//book[@category='cooking']  ‘[]’表示查找属性

 Xpath定位的总结

2.使用text文本属性精确定位,text也可以用.代替

查找//book//price下文本为30.00的元素

 Xpath定位的总结

 

查找year标签中text文本中大于2004的元素

 Xpath定位的总结

 

3.使用contains模糊定位,contains意为包含

模糊定位查找文本信息包含Potter的元素://title[contains(text(),"Potter")]  

Xpath定位的总结 

扩充练习

 Xpath定位的总结

Xpath定位的总结

 

 

4.”*”表示任何属性所有属性

查找所有带有属性值的://@*   

 Xpath定位的总结

查找title标签所有有属性的元素

 Xpath定位的总结

Not取反,表示查找title标签里没有属性的元素,这里没有所以没查找出来

 

@*表示所有属性

not(@*)表示没有属性

 

5.查找带有category属性的元素

//@category

 Xpath定位的总结

 

5.逻辑运算符

1.通过and运算符定位元素

//book[@category="web" and @cover="paperback"]

Xpath定位的总结 

2.通过or运算符定位元素
//book[@category="children" or @cover="paperback"] 

Xpath定位的总结 

3.通过取反not运算符定位元素

//book[not(position()>2)]  book标签中position大于2的

Xpath定位的总结

//book[not(position()>2)]  not取反

Xpath定位的总结

//year[not(.=2005)]  表示取非2005文本节点的year节点

 Xpath定位的总结

通过“>=”“运算符定位元素
//price>=30 查找元素中是否存在price大于等于30的 存在返回Boolean true 不存在返回Boolean: false

 Xpath定位的总结

Xpath定位的总结

 

4.通过“!”运算符定位元素

//book[@category!='web' ]

Xpath定位的总结 

 

6.通过节点索引定位元素

1.查找第一个元素的

//book[1]:找到第一个标签为book

Xpath定位的总结 

 

2.通过position定位3个元素

//bookstore/book[position()=3]     

 Xpath定位的总结

 

3.通过position取多个元素

//bookstore/book[position()>=2]    

 Xpath定位的总结

4.通过last()函数找到最后一个元素

//book[last()]

 

5.通过last()函数找到倒数第二个元素
//book[last()-1]    

 Xpath定位的总结

 

7.轴定位


查找book[1]/title的父元素://book[1]/title/parent::*

Xpath定位的总结

查找book[1]的子元素://book[1]/child::*

Xpath定位的总结

//book/child::price 查找book标签下的所有子元素中标签为price的

 

following-sibling的应用
//bookstore/book[1]/child::title/following-sibling::* 

following-sibling表示当前节点的后序所有兄弟节点元素

就是说查找title后面所有兄弟节点

 Xpath定位的总结


/bookstore/book[1]/child::title/following-sibling::author 

following-sibling::author 指定查找title后面所有兄弟节点中名为author 的元素

Xpath定位的总结 

preceding-sibling::* 表示当前节点的前面所有兄弟节点元素

//bookstore/book[1]/child::price/preceding-sibling::*  意为查找price节点前面所有的兄弟元素

Xpath定位的总结

查找祖先节点包括自身://book[1]/ancestor-or-self::*

Xpath定位的总结

查找子孙节点包括自身://book[1]/descendant-or-self::*

 Xpath定位的总结


查找当前节点的所有元素://book[1]/preceding::* 查找当前节点下的所有元素

Xpath定位的总结

//book[2]//preceding::*  会把book[2]以及book[2]节点之前的所有元素都找出来

Xpath定位的总结

轴总结:

parent::* 表示当前节点的父节点元素
ancestor::* 表示当前节点的祖先节点元素
child::* 表示当前节点的子元素  /A/descendant::* 表示A的所有后代元素
self::* 表示当前节点的自身元素
ancestor-or-self::* 表示当前节点的及它的祖先节点元素
descendant-or-self::* 表示当前节点的及它们的后代元素
following-sibling::* 表示当前节点的后序所有兄弟节点元素
preceding-sibling::* 表示当前节点的前面所有兄弟节点元素
following::* 表示当前节点的后序所有元素
preceding::* 表示当前节点的所有元素

 

相关专题

更多
c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

17

2026.01.23

c++空格相关教程合集
c++空格相关教程合集

本专题整合了c++空格相关教程,阅读专题下面的文章了解更多详细内容。

22

2026.01.23

yy漫画官方登录入口地址合集
yy漫画官方登录入口地址合集

本专题整合了yy漫画入口相关合集,阅读专题下面的文章了解更多详细内容。

91

2026.01.23

漫蛙最新入口地址汇总2026
漫蛙最新入口地址汇总2026

本专题整合了漫蛙最新入口地址大全,阅读专题下面的文章了解更多详细内容。

124

2026.01.23

C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

14

2026.01.23

php远程文件教程合集
php远程文件教程合集

本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。

65

2026.01.22

PHP后端开发相关内容汇总
PHP后端开发相关内容汇总

本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

59

2026.01.22

php会话教程合集
php会话教程合集

本专题整合了php会话教程相关合集,阅读专题下面的文章了解更多详细内容。

61

2026.01.22

宝塔PHP8.4相关教程汇总
宝塔PHP8.4相关教程汇总

本专题整合了宝塔PHP8.4相关教程,阅读专题下面的文章了解更多详细内容。

33

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
微信小程序开发之API篇
微信小程序开发之API篇

共15课时 | 1.2万人学习

php-src源码分析探索
php-src源码分析探索

共6课时 | 0.5万人学习

UNI-APP开发(仿饿了么)
UNI-APP开发(仿饿了么)

共32课时 | 8.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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