xpath学习笔记

符号
. //表示当前节点
.. //父节点
/ //根目录
// //节点下的任意位置 高级应用:"ul//em" 表示ul节点下任意位置的em
@ //含某属性的节点 //@title 那么 <li class='a' title='1'>满足 和其他组合在一起就报错
| //a|b 选择a和b元素
* //所有节点
node() //所有节点 还包含里面的值 比如<i>1</i> 1也是一个对象元素 这是和*的不同之处
text() //所有文字节点 node() 其实 比*多包含了 text()
child::*/child::price //孙节点

谓语
[1] //第几个元素 div[1]第一个div元素
[last()]
[last()-1]
[position()<n] //前n个元素 //li[position()<=2] 表示前2个元素
[@attr] //含某属性的元素 //li[@class] 表示含class属性的li
[@attr='attrVal'] //含某属性且属性值确定的元素 //li[@class='a']
[nodename] //含指定子元素的元素 //*[em] 含em子元素的任意元素
[nodename>n] //含指定子元素且子元素值大于固定值的元素 //*[i>2] html:<div><i>5</></div>
[nodename>n]/nodename //上面一条中的子节点

通配符
contains //内容包含 em[contains(text(),'1')] 那么html:<em>123</em>满足
starts-with //内容包含 em[starts-with(text(),'1')] 那么html:<em>123</em>满足
descendant //所有后代 孙子 的孙子 也包含
ancestor //所有的前辈


其他
//* //所有节点
/*/* //所有位于第二层的节点

原文地址:https://www.cnblogs.com/hack0573/p/4244912.html