XPath 表达式是使用下表中所示的运算符和特殊字符构造的。
/
|
子运算符;选择左侧集合的直接子级。此路径运算符出现在模式开头时,表示应从根节点选择该子级。
|
//
|
递归下降;在任意深度搜索指定元素。此路径运算符出现在模式开头时,表示应从根节点递归下降。
|
.
|
指示当前上下文。
|
..
|
当前上下文节点的父级。
|
*
|
通配符;选择所有元素,与元素名无关。
|
@
|
属性;属性名的前缀。
|
@*
|
属性通配符;选择所有属性,与名称无关。
|
:
|
命名空间分隔符;将命名空间前缀与元素名或属性名分隔。
|
( )
|
为运算分组,明确设置优先级。
|
[ ]
|
应用筛选模式。
|
[ ]
|
下标运算符;用于在集合中编制索引。
|
+
|
执行加法。
|
-
|
执行减法。
|
div
|
根据 IEEE 754 执行浮点除法。
|
*
|
执行乘法。
|
mod
|
从截断除法返回余数。
|
此表不包括布尔运算符和集运算符,这两个运算符在布尔、比较和集表达式或集运算中列出。
优先级顺序(从最高优先级到最低优先级)的定义如下表所示。
优先级
字符
用途
1
|
( )
|
分组
|
2
|
[ ]
|
筛选器
|
3
|
/ //
|
路径运算
|
分组运算符 ()
仅适用于顶级路径表达式
。例如,(//author/degree | //author/name)
是有效的分组运算,但 //author/(degree | name)
不是,详细请看分组
章节。
筛选模式运算符 ([]
) 的优先级高于路径运算符(/
和 //
)。例如,表达式
//comment()[3]
选择相对于文档中任意位置备注的父级索引等于 3 的所有备注。此表达式与表达式
(//comment())[3]
不同,后者选择相对于父级的所有备注集中的第三个备注。前一个表达式可以返回多个备注,后一个表达式只能返回一个备注。
路径运算符
特定类型的元素集合可以使用路径运算符(/
和
//
)确定。这些运算符根据其参数的“左侧”集合进行选择,“右侧”集合表示要选择的元素。子运算符 (/
)
从左侧集合的直接子级中选择,而子代运算符 (//
) 从左侧集合的任意子代中选择。因此,//
可以作为一个或多个层次级别的替代。
注意,路径运算符在执行查询时更改上下文。通过将路径运算符连接在一起,用户可以遍历文档树。
示例:
表达式
引用
author/first-name
|
当前上下文节点的 <author>
元素中的所有 <first-name>
元素。
|
bookstore//title
|
<bookstore>
元素中更深的一级或多级(任意子代)的所有 <title>
元素。注意,此表达式与以下模式 bookstore/*/title
不同。
|
bookstore/*/title
|
属于 <bookstore>
元素的孙级的所有 <title>
元素。
|
bookstore//book/excerpt//emph
|
<book>
元素的 <excerpt>
子级中的任意位置和
<bookstore>
元素中的任意位置的所有 <emph>
元素:
|
.//title
|
当前上下文中更深的一级或多级的所有 <title>
元素。注意,本质上只有这种情况需要句点表示法。
|
通配符
通过使用通配符 (*
) 集合,不使用元素名即可引用元素。*
集合引用作为当前上下文的子级的所有元素,与名称无关。
示例:
表达式
引用
author/*
|
<author>
元素的所有子级
元素。
|
book/*/last-name
|
所有作为 <book>
元素的孙级的 <last–name>
元素。
|
*/*
|
当前上下文的所有孙级元素。
|
my:book
|
my
命名空间中的 <book>
元素。
|
my:*
|
my
命名空间中的所有元素。
|
注意,不支持模式 *:book
属性
XPath 使用 @
符号表示属性名。属性和子元素应公平对待,两种类型之间的功能应尽可能相当。
注意
属性不能包含子元素,所以,如果对属性应用路径运算符,将出现语法错误。此外,不能对属性
应用索引,因为根据定义,不为属性定义任何顺序。
|
示例:
表达式
引用
@style
|
当前元素上下文的 style
属性。
|
price/@exchange
|
当前上下文中 <price>
元素的 exchange
属性。
|
|
所有 <book>
元素的 style
属性。
|
注意,以下示例无效,因为属性不能包含任何子级。
查找多个属性
使用 @*
可以返回某个元素的所有属性。对于将属性作为记录中的字段的应用程序,此表达式可能非常有用。
示例:
表达式
引用
@*
|
当前上下文节点的所有属性。
|
@my:*
|
my
命名空间中的所有属性。不包括 my
命名空间中的元素的未限定属性。
|
注意,不支持模式 @*:title
分享到:
相关推荐
主要介绍了Python3 xml.etree.ElementTree支持的XPath语法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
xpath语法
对XPath语法进行了详细的讲解。XPath可以快速定位到Xml中的节点或者属性。XPath语法很简单,但是强大够用,它也是使用xslt的基础知识。开发人员必备
XPath语法详细介绍 XPath语法详细介绍 XPath语法详细介绍 XPath语法详细介绍 XPath语法详细介绍
xPath helper是一款Chrome浏览器的开发者插件,安装了xPath helper后就能轻松获取HTML元素的xPath,程序员就再也不需要通过搜索html源代码,定位一些id去找到对应的位置去解析网页了。
C#对xml中关于使用xpath语法的介绍
来源:MSDN 包含XPath语法、运算符、示例。
xpath语法与函数
爬虫xpath 应用于浏览器的一个插件,便于帮助书写xpath路径
XPath 简单语法XPath 简单语法XPath 简单语法XPath 简单语法XPath 简单语法XPath 简单语法
Selenium_XPath定位详解 想下载csdn上的东西,苦于无积分,被逼无奈,才生此计,只设置了2分,跪求大佬支持一下。
XPath语法简要说明1
主要给大家介绍了关于Python爬虫基础之XPath语法与lxml库用法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
xpath简介、教程、Axes、节点、实例、语法、运算符
Xpath详解.pdf
二、xpath helper插件三、xpath helper安装使用方法四、XPath语法4.1 节点语法4.2 节点实例4.3 谓语(Predicates)4.4 选取未知节点4.5 选取若干路径五、XPath 轴5.1 轴常用语法5.2 位置路径表达式5.3 步(step)的...
NULL 博文链接:https://z-one.iteye.com/blog/1172949
介绍XSL语法中Xpath的使用方法
astpath:一个命令行工具用于使用XPath语法查询Python ASTs