XPath初探

本文最后更新于 2023年4月8日 下午

什么是XPath

XPath即XML路径语言(XML Path Language),XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。起初XPath的提出的初衷是将其作为一个通用的、介XPointer(英语:XPointer)与XSL间的语法模型。但是XPath很快的被开发者采用来当作小型查询语言。

w3schools教程

XPath节点

XPath常用语法

表达式 描述
nodename Selects all nodes with the name “nodename
/ Selects from the root node
// 自身引用及子孙节点(跳级)
. 选取当前节点
选取当前节点的父节点
@ 选取属性
表达式 描述
text() 寻找某点的文字型别,例如hello<k>hello</k>
comment() 寻找XML注释节点,例如<!-- 注释 -->
processing-instruction() 寻找XML处理指令如<?php echo $a; ?>。在这个例子里,将符合processing-instruction('php')会传回值。
node() 寻找所有点

使用举例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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>
路径表达式 结果
bookstore 选取 bookstore 元素的所有子节点。
/bookstore 选取根元素 bookstore。注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!
bookstore/book 选取属于 bookstore 的子元素的所有 book 元素。
//book 选取所有 book 子元素,而不管它们在文档中的位置。
bookstore//book 选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。
//@lang 选取名为 lang 的所有属性。
路径表达式 结果
/bookstore/book[1] 选取属于 bookstore 子元素的第一个 book 元素。
/bookstore/book[last()] 选取属于 bookstore 子元素的最后一个 book 元素。
/bookstore/book[last()-1] 选取属于 bookstore 子元素的倒数第二个 book 元素。
/bookstore/book[position()❤️] 选取最前面的两个属于 bookstore 元素的子元素的 book 元素。
//title[@lang] 选取所有拥有名为 lang 的属性的 title 元素。
//title[@lang=‘eng’] 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。
/bookstore/book[price>35.00] 选取 bookstore 元素的所有 book 元素,且其中的 price 元素的值须大于 35.00。
/bookstore/book[price>35.00]//title 选取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值须大于 35.00。

在浏览器中使用

开发者工具查找

Chrome插件

XPath Helper是一个很好用的Chrome浏览器扩展,方便直接生成合适的XPath

XPath Helper 使用1

XPath Helper 使用2


XPath初探
https://muzing.top/posts/733790c2/
作者
Muzing
发布于
2021年2月28日
更新于
2023年4月8日
许可协议