XPath学习
一、基本语法
1、以 / 斜线开始,该路径表示到一个元素下的绝对路径
2、如果路径以双斜线 // 开头, 则表示选择文档中所有满足双斜线//之后规则的元素(无论层级关系)
3、星号 * 表示选择所有由星号之前的路径所定位的元素(/AAA/BBB/DDD/* 选择AAA/BBB/DDD下的所有元素;/*/*/*/BBB选择第四层级为BBB的所有元素)
4、[]和last()
方块号里的表达式可以进一步的指定元素, 其中数字表示元素在选择集里的位置, 而last()函数则表示选择集中的最后一个元素.如(/AAA/BBB[0]和/AAA/BBB[last()])
5、属性(有无属性)
//@id 选择所有属性为id的元素 //BBB[@id] 选择有id属性的BBB元素 //BBB[@name] 选择有name属性的BBB元素 //BBB[@*] 选择有任意属性的BBB元素
//BBB[not(@*)] 选择没有属性的BBB元素
6、属性2(带值的属性)
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个子元素的元素
8、name()函数
name()函数返回元素的名称, start-with()函数在该函数的第一个参数字符串是以第二个参数字符开始的情况返回true, contains()函数当其第一个字符串参数包含有第二个字符串参数时返回true.
//*[name()='BBB'] 选择所有名称为BBB的元素(这里等价于//BBB) //*[starts-with(name(),'B')]选择所有名称以"B"起始的元素 //*[contains(name(),'C')]选择所有名称包含"C"的元素
9、string-length函数
string-length函数返回字符串的字符数
//*[string-length(name()) = 3] 选择名字长度为3的元素 //*[string-length(name()) < 3] 选择名字长度小于3的元素
10、分隔符 |
多个路径可以用分隔符 | 合并在一起
//CCC | //BBB 选择所有的CCC和BBB元素
11、descendant (后代)轴
descendant (后代)轴包含上下文节点的后代,一个后代是指子节点或者子节点的子节点等等, 因此descendant轴不会包含属性和命名空间节点.
/descendant::* 选择文档根元素的所有后代.即所有的元素被选择 /AAA/BBB/descendant::* 选择/AAA/BBB的所有后代元素 //CCC/descendant::DDD 选择所有以CCC为祖先元素的DDD元素
12、parent轴
parent轴(axis)包含上下文节点的父节点, 如果有父节点的话
//DDD/parent:: *选择DDD元素的所有父节点
13、ancestor轴
选择祖先节点
/AAA/BBB/DDD/CCC/EEE/ancestor::* 选择EEE的所有根节点 //FFF/ancestor::* 选择FFF元素的祖先节点
14、following-sibling轴
following-sibling轴(axis)包含上下文节点之后的所有兄弟节点
/AAA/BBB/following-sibling::* 选择与BBB同级后边的兄弟节点
15、preceding-sibling 轴
preceding-sibling 轴(axis)包含上下文节点之前的所有兄弟节点
与14刚好相反,一个是之前,一个是之后
16、following轴
following轴(axis)包含同一文档中按文档顺序位于上下文节点之后的所有节点, 除了祖先节点,属性节点和命名空间节点
其后的所有节点,包含不同级别的等只要是在节点之后的所有节点
17、descendant-or-self 轴
descendant-or-self 轴(axis)包含上下文节点本身和该节点的后代节点
ancestor-or-self 轴(axis)包含上下文节点本身和该节点的祖先节点
XPath学习的更多相关文章
- XPath 学习二: 语法
XPath 使用路径表达式来选取 XML 文档中的节点或节点集.节点是通过沿着路径 (path) 或者步 (steps) 来选取的. 下面列出了最有用的路径表达式: 表达式 描述 nodename 选 ...
- xpath 学习一: 节点
xpath 中,有七种类型的节点: 元素.属性.文本.命名空间.处理指令.注释.以及根节点 树的根成为文档节点或者根节点. 节点关系: Parent, Children, sibling(同胞), A ...
- XML Xpath学习
Xpath是一门在xml文档中查找信息的语言. Xpath可用来在xml文档中对元素和属性进行遍历. <1>路径表达式1: 斜杠(/)作为路径内部的分隔符 同一个路径有绝对路径和相对路径两 ...
- XPath学习:轴(3)——descendant
XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历. XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointe ...
- XPath学习:轴(14)——总结
原文地址:http://www.cnblogs.com/zhaozhan/archive/2009/09/10/1564396.html XPath 是一门在 XML 文档中查找信息的语言.XPath ...
- XPath学习:parent,child
XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历. XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointe ...
- HtmlAgilityPackage XPath学习
最近的开发中要用到htmlAgilityPackage, 所以记录一下XPath相关知识! XPath 简介 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对 ...
- Xpath学习笔记
最近复习自己上一年的课本,想起来刚学那个时候想做一个写日记的软件. 想不如做,用控制台瞎写了一个,一做就成了,没什么bug,期间使用Xpath来读数据,所以就稍微学了一下. 学习过程就这样做一点笔记, ...
- python xpath学习
一.选取节点: 二.谓词: 注意:在scrapy中用xpath进行搜索时,如果使用相对路径,要加上.,如,不然搜索的是整个文档.
- 抓包分析、多线程爬虫及xpath学习
1.抓包分析 1.1 Fiddler安装及基本操作 由于很多网站采用的是HTTPS协议,而fiddler默认不支持HTTPS,先通过设置使fiddler能抓取HTTPS网站,过程可参考(https:/ ...
随机推荐
- Supervisord常见用法和介绍
Supervisord是用Python实现的一款非常实用的进程管理工具.supervisord会帮你把管理的应用程序转成daemon程序,而且可以方便的通过命令开启.关闭.重启等操作,而且它管理的进程 ...
- Log4J是Apache组织的开源一个开源项目,通过Log4J,可以指定日志信息输出的目的地,如console、file等。Log4J采用日志级别机制,请按照输出级别由低到高的顺序写出日志输出级别。
Log4J是Apache组织的开源一个开源项目,通过Log4J,可以指定日志信息输出的目的地,如console.file等.Log4J采用日志级别机制,请按照输出级别由低到高的顺序写出日志输出级别. ...
- 【BZOJ】3394: [Usaco2009 Jan]Best Spot 最佳牧场(floyd)
http://www.lydsy.com/JudgeOnline/problem.php?id=3394 裸的floyd.. #include <cstdio> #include < ...
- 【BZOJ】3401: [Usaco2009 Mar]Look Up 仰望(单调栈)
http://www.lydsy.com/JudgeOnline/problem.php?id=3401 还能更裸一些吗.. 维护一个递减的单调栈 #include <cstdio> #i ...
- ubuntu 用命令行设置chrome的proxy
google-chrome-stable --proxy-server="IP proxy Server:port"
- 优化phpstorm运行卡顿问题
在PHPSTORM中点击导航菜单:Help -> Edit Custom VM Options 如果是第一次点击,会提示是否新建配置文件,点击“yse” 在弹出的编辑框末尾加上以下配置 -Daw ...
- 上传文件ie7
https://www.cnblogs.com/front-end-develop/p/6214818.html 第一步:html中引入jQuery-1.7.1.js和ajaxFileUpload.j ...
- iOS开发之--制作属于自己的frameWork
开发的时候,有时候,我们会遇到协同开发,在协同开发的时候,每个开发者都会创建自己的工具类,还有就是当一个项目需要嵌套到另一个项目里面,这些时候,如果能把所需的部分打包成framework,会方便很多, ...
- c itoa和atoi
#include <iostream> using namespace std; int main() { #if 1 ; ];//不要写成char*,因为没有分配空间 itoa(num, ...
- sublime text 3 并列显示
alt+shift+1:显示一列 alt+shift+2:显示二列 alt+shift+3:显示三列 ......