08.24
Xpath 常用部分 https://www.cnblogs.com/yinjiangchong/p/9440014.html
09.01
搬运整理:https://www.qingheluo.com/xpathyufa/
语法:使用路径表达式来选取XML文档中的节点或者节点集
.
..
*
@
text()
/
:如果在最前面,代表从根节点选取,否则选择某节点之下的某个子节点
/ul
:选取根节点子节点中所有 ul 节点
/ul/li
:选取根节点子节点中所有 ul 节点子节点中的 li 节点
//
:从全局节点中选择节点
//ul
:选取所有的 ul 节点而不管它的位置
//div//li
:选取所有 div 节点下所有 li 节点而不管它的位置 ⭐/div/div/div/li/
//form//@name
:选取所有 form 节点下所有的 name 属性值
text()
:获取节点中的文本
//li/text()
:获取 li 节点下所有子节点的内容
//div/*
:匹配 div 元素的所有子节点
//h1[@*]
:匹配所有带属性的 h1 元素谓语:用来查找某个特定节点或包含某个指定的值的节点,被镶嵌在方括号中
[n
]:用来选择第 n 个节点,n 从 1 开始
//ul/li[3]
:表示获取所有 ul 标签下的第 3 个 li 标签的内容
[last()]
:选取最后一个节点
[last()-1]
:选取倒数第 2 个节点
[@price]
:选取拥有 price 属性的节点
[@price='value']
:选取 price 属性等于 value 的节点
[price>3.14]
:选取所有 price 属性的值大于 3.14 的节点XPath轴(Axes):选取相对于当前节点的节点集
使用语法:
轴名称::nodename
//p[@class='style1']/parent::div
选取所有 class 属性等于 style1 的 p 节点的 div 父节点
//p[@class='style1']/parent::*
选取所有 class 属性等于 style1 的 p 节点的所有父节点
ancestor
:选取当前节点的所有先辈(父、祖父等)。
ancestor-or-self
:选取当前节点的所有先辈(父、祖父等)以及当前节点本身。
attribute
:选取当前节点的所有属性。
child
:选取当前节点的所有子元素。
descendant
:选取当前节点的所有后代元素(子、孙等)。
descendant-or-self
:选取当前节点的所有后代元素(子、孙等)以及当前节点本身。
following
:选取文档中当前节点的结束标签之后的所有节点。
following-sibling
:选取当前节点之后的所有兄弟节点
namespace
:选取当前节点的所有命名空间节点。
parent
:选取当前节点的父节点。
preceding
:选取文档中当前节点的开始标签之前的所有节点。
preceding-sibling
:选取当前节点之前的所有同级节点。
self
:选取当前节点常用函数
concat(str1, str2,...)
:拼接字符串
str-join((str1, str2,...), sep='')
:使用 sep 参数的值作为分隔符拼接字符串
substring(str, start, len)
:返回 str 字符串从 start 位置开始指定长度 len 的子字符串(不提供 len 参数返回到字符串末尾),下标从 1 开始
str-length(str)
:返回字符串的长度,不提供 str 参数返回当前节点的字符串长度
normalize-space(str)
:删除 str 开头和结尾的空格,并把内部所有的连续空格替换为一个,不提供 str 参数处理当前节点
upper-case(str)
:把 str 转换为大写
lower-case(str)
:把 str 转换为小写
translate(str1, str2, str3)
:把 str1 中的 str2 替换为 str3
contains(str1, str2)
:str1 包含 str2 返回 true,否则返回 false
//div[contains($class, 'to')]
获取所有 class 属性中包含 ‘to’ 的 div
starts-with(str1, str2)
:str1 以 str2 开始返回 true,否则返回 false
ends-with(str1, str2)
:str1 以 str2 结尾返回 true,否则返回 false
substring-before(str1, str2)
:返回 str2 在 str1 中出现之前的子字符串
substring-after(str1, str2)
:返回 str2 在 str1 中出现之后的子字符串
matches(str, pattern)
:如果 str 匹配指定的模式返回 true,否则返回 false
replace(str, pattern, replace)
:把指定的模式替换为 replace 参数,并返回结果
tokenize(str, pattern)
:用指定的模式分割 st r并返回分割后的列表