XPath语法规则及实例

XPath语法规则及实例

XPath语法规则

一、XPath术语:

1.节点:在XPath中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。

XML文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。

实例

1:XML文档:

<?xml version="1.0" encoding="ISO-8859-1"?> 

<bookstore> 

<book> 

<title lang="en">Harry Potter</title> 

<author>J K. Rowling</author> 

<year>2005</year> 

<price>29.99</price> 

</book> 

</bookstore> 

上面的XML文档中的节点例子:<bookstore>(文档节点),<author>J K. Rowling</author>(元素节点),lang="en"(属性节点)。

2.基本值(或称原子值,Atomic value)

基本值是无父或无子的节点。基本值的例子:在实例1的xml文档中J K. Rowling、"en" 

3.项目(Item)项目是基本值或者节点。

4.节点的关系:

1)父节点(Parent):每个元素以及属性都有一个父。在上面实例1的xml 文档中,book 元素是 title、author、year 以及price 元素的父节点。

2)子节点(Children):元素节点可有零个、一个或多个子。在上面实例1的xml 文档中,title、author、year 以及price 元素都是book 元素的子。

3)同胞(Sibling):拥有相同的父的节点,在上面实例1的xml 文档中,title、author、year 以及price 元素都是同胞。

4)先辈(Ancestor)某节点的父、父的父,等等。在实例1的xml 文档中,title 元素的先辈是book 元素和bookstore 元素。

5)后代(Descendant)某个节点的子,子的子,等等。在实例1的xml 文档中,bookstore 的后代是book、title、author、year 以及price 元素。

二、XPath语法:

XPath 使用路径表达式来选取XML 文档中的节点或节点集。节点是通过沿着路径(path) 或者步(steps) 来选取的。我们将在下面的例子中使用这个XML 文档:

<?xml version="1.0" encoding="ISO-8859-1"?> 

<bookstore> 

<book> 

<title lang="eng">Harry Potter</title> 

<price>29.99</price> 

<title lang="eng">Learning XML</title> 

<price>39.95</price> 

</book> 

</bookstore> 

1.选取节点XPath 使用路径表达式在XML 文档中选取节点。节点是通过沿着路径或者step 来选取的。下面列出了最有用的路径表达式:

 表达式描述nodename 选取此节点的所有子节点。

实例:在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:

 2.谓语(Predicates)

 谓语用来查找某个特定的节点或者包含某个指定的值的节点,谓语被嵌在方括号中。

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

3.选取未知节点XPath

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

实例:在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

 4.选取若干路径

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

 实例:在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

 XPath语法规则及实例

三、XPath Axes(坐标轴)

我们将在下面的例子中使用此XML 文档:

1.XPath 轴

轴可定义相对于当前节点的节点集。

2.位置路径表达式

 位置路径可以是绝对的,也可以是相对的。绝对路径起始于正斜杠( / ),而相对路径不会这样。在两种情况中,位置路径均包括一个或多个步,每个步均被斜杠分割:

 绝对位置路径:/step/step/... 

 相对位置路径:step/step/... 

 每个步均根据当前节点集之中的节点来进行计算。

3.步(step)包括:

轴(axis):定义所选节点与当前节点之间的树关系。

节点测试(node-test):识别某个轴内部的节点。

零个或者更多谓语(predicate):更深入地提炼所选的节点集。

步的语法:轴名称::节点测试[谓语]。

实例:

4.常用函数:

last()  节点数组的最后一个

position() 下标索引,从1开始

text()    节点的文本内容

contains(@attr, 'value')     模糊匹配

starts-with(@attr, 'value')  是否以指定字符开头

count(@attr)      匹配次数

string-length()       返回字符串的字符数,你应该用&lt;替代<, 用&gt;代替> 

normalize-space()    函数删除了前部和尾部的空格, 并且把连续的空格串替换为一个单一的空格

四、XPath 运算符:

五、XPath 实例

实例一

 

 

 

 

文章来源于:https://wenku.baidu.com/view/64d6c115f18583d0496459e0.html

 

转载于:https://www.cnblogs.com/jingdenghuakai/p/11078780.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364168.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring测试上下文缓存+ AspectJ @Transactional + Ehcache的痛苦

您在使用AspectJ Transactionals和Spring吗&#xff1f; 您是否有多个SessionFactory&#xff0c;也许一个用于嵌入式数据库进行单元测试&#xff0c;一个用于实际数据库进行集成测试&#xff1f; 您是否遇到这些例外之一&#xff1f; org.springframework.transaction.Cannot…

WorkPlus超级APP助力企业节省IT人力成本,实现快速移动化

在信息化时代&#xff0c;移动应用已经成为企业发展的重要组成部分。然而&#xff0c;开发和维护原生客户端的成本却相对较高&#xff0c;需要大量的iOS、安卓和桌面端工程师。为了解决这一问题&#xff0c;WorkPlus作为一个功能完备的超级APP&#xff0c;为企业节约了大量的IT…

hujingwei oracle_Oracle收缩表空间

可以使用 alter database datafile file path... resize xM 的命令来缩小数据文件。SELECT alter database datafile || A.FILE_NAME || resize ||ROUND(A.FILESIZE - (A.FILESIZE - C.HWMSIZE - 100) * 0.8) || M;,A.FILESIZE || M AS "数据文件的总大小", C.HWM…

addEventListener的click和onclick的区别

前两节都和addEventListener的click有关&#xff0c;于是在想它与onclick有什么区别呢&#xff0c;自己调试了一下&#xff0c;网上也有相关资料 事件绑定 onclick绑定方式 优点&#xff1a; - 简洁 - 处理事件的this关键字指向当前元素 缺点&#xff1a; - 不能对事件捕获或…

学车日记

今天是正式开始学车&#xff0c;先考交规&#xff0c;今天早上要赶驾校的班车&#xff0c;所以必须6点起床&#xff0c;那叫一个难受呀&#xff0c;好像已经有很长时间没有这么早起过了&#xff0c;不过经过复杂的思想斗争我终于还是如期起床了&#xff0c;今天要是赶不上班车错…

ApiCloud利用NVTabBar模块快速搭建起APP的框架

废话不说&#xff0c;直接上代码 模块地址&#xff1a;https://docs.apicloud.com/Client-API/Nav-Menu/NVTabBar 代码实例&#xff1a; <!doctype html> <html><head><meta charset"utf-8"><meta name"viewport" content"…

Java 8中新的并行API:Glitz和Glamour的背后

我是一个出色的多任务处理者。 即使我在写这篇文章&#xff0c;我仍然可以为昨天在一个大家都对我陌生的聚会上发表的言论感到尴尬。 好消息是&#xff0c;我并不孤单– Java 8在多任务处理方面也相当出色。 让我们看看如何。 Java 8中引入的关键新功能之一是并行数组操作。 这…

有趣的js匿名函数写法(function嵌套)

例子没有什么实际意义&#xff0c;只能做为思路参考 <!DOCTYPE html><html><head><meta charset"UTF-8"><title></title></head><body><script>function ck(a) {console.log(a);return function(b) {console.…

mangouDB和mysql的区别_谈谈mongodb,mysql的区别和具体应用场景

最近对数据库比较感兴趣&#xff0c;于是就去研究了下部分相关热门的数据库。MySQL关系型数据库。在不同的引擎上有不同 的存储方式。查询语句是使用传统的sql语句&#xff0c;拥有较为成熟的体系&#xff0c;成熟度很高。开源数据库的份额在不断增加&#xff0c;mysql的份额页…

ASP.NET 中执行 URL 重写

作者&#xff1a;overred 来源&#xff1a;原创URL 重写就是把URL地址重新改写&#xff08;汗^_^&#xff09;。详情&#xff1a;http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx优点&#xff1a;把url缩短等用法&#xff1a;1.下载ms的…

考眼力

题目内容&#xff1a; gmbh{4d850d5c3c2756f67b91cbe8f046eebd} try to find the flag 看到gmbh发现偏移&#xff0c;按照gmbhflag发现字母向左发生偏移&#xff0c;字母全部向左移动一位即可得到flag。 flag&#xff1a;flag{4c850c5b3b2756e67a91bad8e046ddac} 总结&#xf…

springMVC开启声明式事务实现操作日志记录

第一步、在applicationContext-mvc.xml开启AOP注解扫描 <aop:aspectj-autoproxy/> 第二步、创建增强类&#xff0c;实现日志记录 Component //把切面添加到spring容器中 Aspect //变成切面类 public class WriteLog {/***参数&#xff1a;代表目标方法对象**/public Obje…

Spring Boot 1.0和Spring Boot 1.0.1错误修复版本

Spring Boot团队最近宣布了Spring Boot 1.0版本 &#xff0c;随后是Spring Boot 1.0.1.RELEASE &#xff0c;这是一个错误修复版本&#xff0c;其中还包含一些新功能。 Spring Boot创建于18个月前&#xff0c;旨在改善无容器Web应用程序体系结构。 新版本已经在Maven Central和…

nine

nine Scarpy爬虫框架https://www.cnblogs.com/kermitjam/articles/10147261.html?tdsourcetags_pctim_aiomsg 高并发的爬虫框架 Runspider只能执行某个 爬虫程序.py文件 将项目根目录导入 Xpath语法 获取内容&#xff08;‘./text()’) 发送请求 ---> 获取响应数据 --->…

mysql用户 11_MySQL-快速入门(11)用户管理

1、权限表存储用户权限信息表主要有&#xff1a;user、db、host、tables_priv、columns_priv、procs_priv。1》user表&#xff1a;记录允许连接到服务器的账号信息&#xff0c;里面的权限是全局级别的。user表有42个字段&#xff0c;这些字段可以分为4类&#xff0c;分别是用户…

利用canvas来绘制一个会动的图画

1 <!DOCTYPE html>2 <html lang"en">3 <head>4 <meta charset"UTF-8">5 <title>绘制小人动画</title>6 <style>7 canvas{8 border: 1px solid green;9 }10 </s…

flash快捷键

< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd> A 箭头L 套索 N 直线T 文字 O 椭圆R 矩形 P 铅笔B 笔刷 I 墨水瓶U 油漆桶 D 滴管E 橡皮擦 H 移动M 放大镜 CTRLN 新建一个影片 CTRLO 打开一个影片 CTRLSHIFTO 以图库打开影片 CT…

求逆序数——树状数组

简介 首先解释一下什么是逆序数&#xff0c;在一个排列中&#xff0c;如果前面的数大于后面的数&#xff0c;则称这两个数为一对逆序&#xff0c;而在这个排列中逆序对的总数称为逆序数。 然后对于树状数组&#xff0c;如果有一点了解的话&#xff0c;树状数组一般是用于数组区…

数据库范式设计

设计范式(第一范式&#xff0c;第二范式&#xff0c;第三范式)所谓第一范式&#xff08;1NF&#xff09;是指数据库表的每一列都是不可分割的基本数据项&#xff0c;同一列中不能有多个值&#xff0c;即实体中的某个属性不能有多个值或者不能有重复的属性。 create table stude…

使用ActiveMQ –具有故障转移协议的“主/从”配置

介绍 ActiveMQ代理往往是企业中消息传递基础结构的核心部分。 此消息传递基础结构的高度可用性和可伸缩性至关重要。 请阅读此链接 &#xff0c;以了解有关创建经纪人网络以支持各种用例的更多信息。 ActiveMQ的流行用例之一是带有共享数据库的主/从配置。 使用此配置时&#x…