首页 > 其他分享 >XPath基本语法的使用

XPath基本语法的使用

时间:2024-01-26 17:34:04浏览次数:33  
标签:XPath 基本 price 元素 选取 语法 book message 节点

xpath基本语法

https://www.jb51.net/program/306644fge.htm

https://www.cnblogs.com/wu-wu/p/11642992.html

https://blog.csdn.net/Once_day/article/details/129869027

XPath语法|菜鸟教程

https://zhuanlan.zhihu.com/p/342903085

1.XPath概述

1.1概述

下面是关于xpath的概述:

XPath 使用路径表达式在 XML 文档中进行导航
XPath 包含一个标准函数库
XPath 是 XSLT 中的主要元素
XPath 是一个 W3C 标准
XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。

XPath 含有超过 100 个内建的函数。这些函数用于字符串值、数值、日期和时间比较、节点和 QName 处理、序列处理、逻辑值等等。

1.2Xpath节点术语

在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML 文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。

基本值是指无父或无子的节点,项目则指基本值或者节点。

节点之间有如下的可能关系:

  • 父(Parent), 每个元素以及属性都有一个父。
  • 子(Children), 元素节点可有零个、一个或多个子。
  • 同胞(Sibling),拥有相同的父的节点。
  • 先辈(Ancestor),某节点的父、父的父,等等。
  • 后代(Descendant),某个节点的子,子的子,等等。

XPath(XML Path Language)是一种用于在 XML 文档中定位和选择节点的语言。XPath的选择功能非常强大,可以通过简单的路径选择语法,选取文档中的任意节点或节点集。同样也支持 HTML 元素的解析,学会XPath,可以轻松抓取网页数据,提高数据获取效率。

2.XPath基础语法

2.1 选取节点

XPath使用路径表达式来选取XML或HTML文档中的节点或节点集。下面是一些常用的路径表达式:

表达式 描述
node-name 选取此节点的所有子节点。
/ 从根节点选取。
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
. 选取当前节点。
.. 选取当前节点的父节点。
@ (@name) 选取属性。 (选取名字为name的属性)

上述的不同路径表达式能互相组合,从而构建强大的表达能力

2.2 谓语表达式

谓语用来查找某个特定的节点或者包含某个指定的值的节点。

谓语被嵌在方括号中使用。

在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:

路径表达式 结果
/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。

2.3选取未知节点

XPath 通配符可用来选取未知的 XML 元素。

通配符 描述 示例
* 匹配任何元素节点 //book/* 选取<book>元素下的任意子元素节点
@* 匹配任何属性节点 //book/@* 选取<book>元素上的任意属性节点,如<book category='fiction'>中的category属性
node() 匹配任何类型的节点 //book/node() 选取<book>元素下的所有类型的子节点,包括元素节点、文本节点、注释节点等

例子:

路径表达式 结果
/bookstore/* 选取 bookstore 元素的所有子元素。
//* 选取文档中的所有元素。
//title[@*] 选取所有带有属性的 title 元素。

2.4 谓语使用(position、contains、starts-with)

以及使用谓词来进一步筛选选择的节点集。谓词是一种用来对节点进行过滤和排序的机制,可以包含比较运算符、逻辑运算符和函数等,部分示例如下:

谓语 描述 示例
[position()=n] 选取位于指定位置的节点。n 是节点的位置(从 1 开始计数) //book[position()=1] 选取第一个<book>元素
[last()=n] 选取位于指定位置的最后一个节点。n 是节点的位置(从 1 开始计数) //book[last()=1] 选取最后一个<book>元素
[contains(string, substring)] 选取包含指定子字符串的节点。string 是节点的文本内容,substring 是要查找的子字符串 //book[contains(title, 'XML')] 选取标题中包含子字符串'XML'<book>元素
[starts-with(string, prefix)] 选取以指定前缀开始的节点。string 是节点的文本内容,prefix 是要匹配的前缀字符串 //book[starts-with(title, 'The')] 选取标题以'The'开始的<book>元素
[text()=string] 选取文本内容完全匹配的节点。string 是要匹配的文本内容 //book[text()='Book Title'] 选取文本内容为'Book Title'<book>元素
[@category='non-fiction'] 选取具有指定属性值的节点。category 是属性名称,non-fiction 是要匹配的值 //book[@category='non-fiction'] 选取具有属性category值为'non-fiction'<book>元素

2.5 多路径选择

通过在路径表达式中使用“|”运算符,您可以选取若干个路径。

  • //book/title | //book/price 选取 book 元素的所有 title 和 price 元素。
  • //title | //price 选取文档中的所有 title 和 price 元素。
  • /bookstore/book/title | //price 选取属于 bookstore 元素的 book 元素的所有 title 元素,以及文档中所有的 price 元素。

2.6 XPath轴

通过轴这一定义,能以当前节点的相对位置选择目标节点集。

轴名称 结果
ancestor 选取当前节点的所有先辈(父、祖父等)。
ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身。
attribute 选取当前节点的所有属性。
child 选取当前节点的所有子元素。
descendant 选取当前节点的所有后代元素(子、孙等)。
descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身。
following 选取文档中当前节点的结束标签之后的所有节点。
namespace 选取当前节点的所有命名空间节点。
parent 选取当前节点的父节点。
preceding 选取文档中当前节点的开始标签之前的所有节点。
preceding-sibling 选取当前节点之前的所有同级节点。
self 选取当前节点。

例子:

例子 结果
child::book 选取所有属于当前节点的子元素的 book 节点。
attribute::lang 选取当前节点的 lang 属性。
child:

标签:XPath,基本,price,元素,选取,语法,book,message,节点
From: https://www.cnblogs.com/yin-jihu/p/17989857

相关文章

  • Python中为何使用新语法而不是装饰器来实现async/await异步功能
    Python是一种多范式编程语言,通过引入新的语法和特性,不断提升其功能和灵活性。在异步编程领域,Python引入了async/await关键字来实现协程和异步操作,而不是使用已有的装饰器语法。本文将探讨为何Python选择引入新语法来实现async/await异步功能,以及与装饰器的区别和优势。一、理解异步......
  • Golang 语言入门:基础语法与示例
    引言Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。自2009年推出以来,Go已经成为云计算、微服务、网络服务器等领域的热门选择。其设计哲学是简洁、快速和易于理解,这使得Go语言特别适合当今快速发展的软件行业。Go语言的基本语法......
  • Linux 系统安装的基本操作
    Linux基本安装方法 centos6.4 这里为大家介绍Linux的安装,安装步骤比较繁琐,现在其实云服务器挺普遍的,价格也便宜,如果自己不想搭建,也可以直接买一台学习用用,参考各大云服务器比较。本次以centos6.4为例。 centos下载地址:可以去官网下载最新版本:https://www.cento......
  • Arista基本配置
    Arista基本配置AristaUserGuideWrittenbySuntengfeiVersion1.0目录1.Arista部署模式.......................................................................................................................51.1零接触部署模式......................................
  • java 判断数字在某个区间的语法
    Java判断数字在某个区间的语法介绍区间判断语法if语句switch语句示例代码总结介绍在Java编程中,经常需要判断一个数字是否在某个区间内。例如,判断一个学生成绩是否及格,判断一个年龄是否在合法范围等。本文将介绍Java中判断数字在某个区间的语法,并给出相应的代码示例。......
  • Linux30个常用基本命令
    1、cd命令功能说明:切换目录。举例:却换到根目录:cd/2、ls命令功能说明:列出目录内容。举例:列出/var目录的文件和目录的信息:ls–l/var;最常用方式ls–ltr3、cat命令功能说明:查看小文件内容。举例:查看test.txt文件内容:cattest.txt4、chmod命令功能说明:修改文......
  • Python基础语法:代码规范、判断语句与循环语句
    Python是一种高级、动态类型的编程语言,其语法清晰、简洁,易于学习。本文将介绍Python基础语法中的代码规范、判断语句和循环语句。一、代码规范良好的代码规范可以提高代码的可读性和可维护性。在Python中,有一些常见的代码规范建议:使用有意义的变量名。变量名应该清晰地描述变量的用......
  • MySQL所有常用语法大全
    MySQL所有常用语法大全一、常用操作数据库的命令1.showdatabases;查看所有的数据库2.createdatabasetest;创建一个叫test的数据库3.dropdatabasetest;删除一个叫test的数据库4.usetest;选中库,在建表之前必须要选择数据库5.showtables;在选中的数据库之中查看所......
  • # WinDbg学习三(字符串通配符语法)
    说明星号(*)代表零个或多个字符。问号(?)代表任意单个字符。包含字符列表的方括号([])代表列表中的任何单个字符。恰好匹配列表中的一个字符。在这些括号内,您可以使用连字符(-)指定范围。例如,Prog[er-t7]am匹配“Progeam”、“Program”、“Progsam”、“Pro......
  • prometheus基本使用
    参考链接:https://www.prometheus.wang/作者总结的很好,大家都可以跟着学习看看prometheus的由来受启发与google的brogmon监控系统,从2012年开始由前Google工程师在Soundcloud以开源软件的形式进行研发,并且于2015年早期对外发布早期版本。2016年5月继Kubernetes之后成为第二个正......