XPath
XPath的寻址逻辑
使用XPath表达式定位元素A时,需要先找初始节点,然后根据初始节点的上下文执行其他运算来找元素A。
选择初始节点
我们可以选择当前节点作为初始节点,也可以将文档根元素作为初始节点。
# 当前节点:句点+正斜杠
./
# 文档根元素:正斜杠后接星号
//
# 文档中的所有元素, 这个用法和谓词一起使用
//*
复制代码
在初始节点选择上下文
以一棵节点树为例
SELF是一个初始点
初始点的子节点,用正斜杠表示:/
初始节点的后代节点,用2个正斜杠表示: //
初始节点的父节点,用2个句点表示: ..
使用谓词过滤节点集
谓词表达式只检查真假。如果节点集的节点与谓词的表示符相匹配,则此节点仍保留在结果节点集中。
Example
//address[ort=”Stuttgart”]
先选择出来所有的address元素,在这些元素中,只有ort子元素的值Stuggart的address元素才会被选择出来。
实例
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
# 如果我们想要选取第一个book元素,我们可以选择初始节点为文档根元素,然后找第一个book元素:
//book[1]
# 如果我想定位第一个title元素,我们有以下3种方式
1. 将文档根元素选为初始节点,然后找第一个title元素://title[1]
2. 根据子元素title的值找到父元素book元素,然后定位子节点://*[title='Harry Potter']/title
3. 以所有元素为初始节点集,使用谓词(元素的属性值)来定位元素://*[@lang='eng'][1]
这里要注意:XPath里面的索引不是从0开始的,而是从1开始的。
复制代码
Tips
当一个html页面中,页面被分成了展示信息的几部分,每部分结构相同且这个页面没有id属性。这个时候,我们定位元素就可以通过元素值定位父元素作为初始元素。也就是实例2
References
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END