XPath解析详解

一、XPath基本语法

1、XPath起步步骤

XPath是通过路径表达式来选取XML文档中的节点或节点集的,XPath有7种基本的路径表达式,包括节点选择、属性选择、位置选择、逻辑运算符、数值运算符、字符串函数、数值函数等。

// 代表选择根节点
/ 代表选择根节点下的直接子节点
descendant:: 选取从当前节点开始所有子孙节点
.. 选取当前节点的父节点
@ 选取某个属性的值
例子:
//bookstore/book[1]:选取第一个book元素节点

2、XPath运算符

XPath运算符主要包括节点比较运算、字符串比较运算、逻辑运算、数值运算等。

节点比较运算:
=, !=, <, , >=
字符串比较运算:
=, !=, <, , >=, contains()
逻辑运算:
and, or, not
数值运算:
+, -, *, div, mod
例子:
//bookstore/book[price>35.00]: 选取bookstore下的所有book元素节点中,price大于35.00的节点。

二、XPath选取节点

1、XPath选取节点类型

XPath中节点类型主要包括元素节点、属性节点、文本节点、命名空间节点等。

选取元素节点:
//+元素名:选取所有该元素名的节点
/ 子节点:选取该节点的直接子节点
选取属性节点:
//@属性名:选取该属性名的所有属性节点

2、XPath谓语的使用

谓语是用来限定查找范围的,一般包含在[]之中,可以使用一些运算符和函数对选取的节点作出进一步的限制。

例如://*[@lang='cn']:选取lang属性为cn的所有元素节点。

三、XPath选取文本节点

1、XPath选取文本节点的方法

XPath选取文本节点主要通过text()函数实现。

例如://bookstore/book[3]/title/text():选取bookstore下的第3个book元素节点的title子节点的文本值。

2、XPath选取多个文本节点的方法

XPath选取多个文本节点的方法主要是通过使用|运算符实现。

例如://bookstore/book/title | //bookstore/book/author:选取bookstore下的所有book元素节点的title和author子节点的文本值。

四、XPath选取节点属性

1、XPath选取属性节点的方法

XPath选取属性节点主要是通过使用@属性名的形式实现。

例如://bookstore/book[1]/@category:选取bookstore下的第1个book元素节点的category属性值。

2、XPath选取多个属性节点的方法

与选取多个文本节点类似,XPath选取多个属性节点的方法主要是通过使用|运算符实现。

例如://bookstore/book[@lang='en' or @lang='cn']/@category | //bookstore/book/title:选取lang属性为en或cn的所有book元素节点的category属性值和所有title子节点的文本值。

五、XPath函数

1、XPath函数的定义

XPath函数是用来处理查找结果和其他值得函数,通过函数名和参数列表调用,可以将结果进一步加工和处理。

常用的函数有:
count(), sum(), concat(), substring(), contains(), floor(), round()等。
例如:count(//bookstore/book):选取bookstore下的所有book元素节点的数量。

2、XPath函数与运算符的联合使用

XPath函数和运算符的联合使用可以实现更加强大的功能,例如查找某一类型的节点中特定的文本值等。

例如://bookstore/book[contains(title, 'Harry Potter')]/price:选取title中包含Harry Potter的所有book元素节点的price子节点的文本内容。

六、XPath轴

1、XPath轴的介绍

XPath轴是一组预定义的节点集合,包括了当前节点、父节点、子节点和兄弟节点等,在XPath中使用轴可以对节点进行更加灵活的定位。

常用的轴有:
self, parent, child, descendant, following-sibling, preceding-sibling等。

2、XPath轴的语法

XPath轴的语法是在选取节点时添加轴名称和分隔符“::”,例如:axis::nodetype。

例如:ancestor::book:选取当前节点的祖先节点中所有book元素节点。

七、XPath运用场景和注意事项

1、XPath的运用场景

XPath可以用于处理XML数据和HTML数据,便于对数据进行定位和提取,广泛应用于Web数据挖掘、自然语言处理等领域。

2、XPath的注意事项

在XPath使用过程中需要注意元素和属性的大小写区分问题,避免出现错误。

同时,XPath路径表达式不应该过于冗长,否则会降低执行效率,应该结合具体情况进行优化。

八、代码示例

Example

原创文章,作者:BFDMY,如若转载,请注明出处:https://www.506064.com/n/331587.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
BFDMYBFDMY
上一篇 2025-01-20 14:10
下一篇 2025-01-20 14:10

相关推荐

  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • 详解eclipse设置

    一、安装与基础设置 1、下载eclipse并进行安装。 2、打开eclipse,选择对应的工作空间路径。 File -> Switch Workspace -> [选择…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • Java BigDecimal 精度详解

    一、基础概念 Java BigDecimal 是一个用于高精度计算的类。普通的 double 或 float 类型只能精确表示有限的数字,而对于需要高精度计算的场景,BigDeci…

    编程 2025-04-25

发表回复

登录后才能评论