XPath学习笔记

XPath语法

XPath使用路径表达式选取XML文档中的节点或者节点集。

路径表达式

表达式描述
nodename获得该节点下的所有节点
/从根节点开始
//从匹配选择的当前节点开始,不考虑位置
.选取当前节点
选取当前节点的父节点
@选取属性

比如:

表达式描述
nation选取nation元素所有子节点
/nation选取根节点nation,斜杠 / 开始表示当该元素的绝对路径
nation/province选取属于nation子元素的所有province元素
//province选取所有province元素
nation//province选取nation元素后代的所有province元素
//@lang选取名为lang的所有属性

谓语

谓语放在路径表达式后面的方括号里。用于对选取的结果筛选。

路径表达式结果
/nation/province[1]选取属于nation子元素的第一个province元素
/nation/province[last()]选取属于nation子元素的最后一个province元素
/nation/province[last()-1]选取属于nation子元素的倒数第二个province元素
/nation/province[position()<10选取属于nation子元素的前9个province元素,位置是从1开始
//title[@lang]选取所有lang属性的title元素
//title[@lang=‘eng’]选取所有lang属性值为eng的title元素
nation/province[popu>1000]选取nation子元素所有province元素,且popu元素值大于1000
nation/province[popi>1000]//title选取nation子元素所有province元素,其中price元素大于1000。从结果中选取所有title元素

匹配位置节点

XPath通配符可以匹配位置的XML元素。

通配符描述
*匹配任何元素节点
@*匹配任何属性节点
node()匹配任何类型的节点

比如:

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

表达式组合

使用 | 将表达式组合在一起,选取多个路径。

路径表达式结果
//nation/state | //nation/province选取nation元素所有的state元素和province元素
//state | //province选取所有的state元素和province元素
/nation/province/worker | //popu选取nation元素下province元素所有的worker元素,和文档中所有的popu元素

XPath轴

轴定义相对于当前节点的所有节点集

轴名称结果
ancestor选取当前节点的所有祖先节点
ancestor-or-self选取当前节点的所有祖先节点以及自身节点
attribute选取当前节点的所有属性
child选取当前节点的所有子元素
descendant选取当前节点的所有子孙元素
descendant-or-self选取当前节点的所有子孙元素以及自身节点
following选取文档中当前节点的结束标签之后的所有节点
following-sibling选取当前节点之后的所有兄弟节点
namespace选取当前节点的所有命名空间节点
parent选取当前节点的父节点
preceding选取文档中当前节点的开始标签之前的所有节点
preceding-sibling选取当前节点之前的所有兄弟节点
self选取当前节点

XPath运算符

XPath表达式可返回节点集、字符串、逻辑、以及数字

运算符演示结果
|//province | //state返回所有province和state元素集
+6 + 410
-6 - 42
*6*424
div4 div 22
=popu = 1000如果popu为1000,返回true,否则返回false
!=popu != 1000如果popu不是1000,返回true,否则返回false
<popu < 1000如果popu小于1000,返回true,否则返回false
<=popu <= 1000满足条件返回true,否则返回false
>popu > 1000满足条件返回true,否则返回false
>=popu >= 1000满足条件返回true,否则返回false
orpopu = 1000 or popu = 2000popu为1000或者2000返回true,否则返回false
andpopu > 1000 and popu< 2000popu为1000与2000之间的值,返回true,否则返回false
mod5 mod 21

函数

  • 上下文函数
名称说明
fn:position()返回当前正处理的节点的index位置
fn:last()返回当前正处理节点列表中项目数目
fn:current-dataTime()返回当前的dateTime(带有时区)
fn:current-data()返回当前的日期(带有时区)
fn:current-time()返回当前的时间(带有时区)
fn:implicit-timezone()
fn:default-collation()返回默认对照的值
fn:static-base-uri

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

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

相关文章

Exynos4412 中断驱动开发相关问题总结

1、Linux 中如何标识一个外部中断&#xff1f; 在linux kernel中&#xff0c;我们使用下面两个ID来标识一个来自外设的中断&#xff1a; a -- IRQ number CPU需要为每一个外设中断编号&#xff0c;我们称之IRQ Number。这个IRQ number是一个虚拟的interrupt ID&#xff0c;和硬…

delphi 最全日期格式_DateUtils时间单元说明

DateUtils时间单元说明 CompareDate 函数 比较两个日期时间值日期部分的大小 CompareDateTime 函数 比较两个日期时间值的大小 CompareTime 函数 比较两个日期时间值时间部分的大小 DateOf 函数 去除日期时间值的时间部分 DateTimeToJulianDate 函数 转换日期时间值为儒略日 Da…

python基础学习笔记

变量赋值 赋值运算符 是主要的赋值运算符&#xff0c;其他的是增量赋值运算符。 aint 12 astring python afloat 3.14 alist [1,3,4]赋值并不是将一个值赋给一个变量。python中对象是通过引用传递的&#xff0c;是将对象的应用传递给变量。 >>> x1 >>&g…

Exynos4412 IIC 总线驱动开发相关问题总结

一 、问题 1、IIC总线上的设备是怎么描述的&#xff1f; struct i2c_client{struct device dev;...};2、IIC总线上的驱动是怎么描述的&#xff1f; struct i2c_driver {struct device_driver driver;};3、IIC总线上的设备和驱动是怎么匹配的 1)、对于 Cortex - A8 通过driver…

sersync+rsync实现实时同步

在分布式应用中会遇到一个问题&#xff0c;就是多个服务器间的文件如何能始终保持一致。一种经典的办法是将需要保持一致的文件存储在NFS上&#xff0c;这种方法虽然简单方便但却将本来多点的应用在文件存储上又变成了单点&#xff0c;这违背了分布式应用部署的初衷。为了保留多…

Python爬虫利器五Selenium用法

在上一节我们学习了 PhantomJS 的基本用法&#xff0c;归根结底它是一个没有界面的浏览器&#xff0c;而且运行的是 JavaScript 脚本&#xff0c;然而这就能写爬虫了吗&#xff1f;这又和 Python 有什么关系&#xff1f;说好的 Python 爬虫呢&#xff1f;别急&#xff0c;接下来…

Cronolog 分割 Tomcat8 Catalina.out日志 (转)

默认情况下&#xff0c;tomcat的catalina.out日志文件是没有像其它日志一样&#xff0c;按日期进行分割&#xff0c;而是全部输出全部写入到一个catalina.out&#xff0c;这样日积月累就会造成.out日志越来越大&#xff0c;给管理造成了不便&#xff0c;为了实现像其它日志文件…

Exynos4412 IIC总线驱动开发(二)—— IIC 驱动开发

前面在Exynos4412 IIC总线驱动开发&#xff08;一&#xff09;—— IIC 基础概念及驱动架构分析 中学习了IIC驱动的架构&#xff0c;下面进入我们的驱动开发过程 首先看一张代码层次图&#xff0c;有助于我们的理解 上面这些代码的展示是告诉我们&#xff1a;linux内核和芯片提…

Python爬虫利器六PyQuery的用法

你是否觉得 XPath 的用法多少有点晦涩难记呢&#xff1f; 你是否觉得 BeautifulSoup 的语法多少有些悭吝难懂呢&#xff1f; 你是否甚至还在苦苦研究正则表达式却因为少些了一个点而抓狂呢&#xff1f; 你是否已经有了一些前端基础了解选择器却与另外一些奇怪的选择器语法混淆了…

windows10下载

http://care.dlservice.microsoft.com/dl/download/F/5/7/F574727C-B145-4A7D-B85B-11C4E8DC894B/9841.0.140912-1613.FBL_RELEASE_CLIENTENTERPRISE_VOL_X64FRE_ZH-CN.ISO转载于:https://www.cnblogs.com/thankyouGod/p/6366971.html

Exynos4412 IIC总线驱动开发(一)—— IIC 基础概念及驱动架构分析

关于Exynos4412 IIC 裸机开发请看 &#xff1a;Exynos4412 裸机开发 —— IIC总线 &#xff0c;下面回顾下 IIC 基础概念 一、IIC 基础概念 IIC(Inter&#xff0d;Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线&#xff0c;用于连接微控制器及其外围设备。I…

Python 爬虫进阶一之爬虫框架概述

综述 爬虫入门之后&#xff0c;我们有两条路可以走。 一个是继续深入学习&#xff0c;以及关于设计模式的一些知识&#xff0c;强化 Python 相关知识&#xff0c;自己动手造轮子&#xff0c;继续为自己的爬虫增加分布式&#xff0c;多线程等功能扩展。另一条路便是学习一些优秀…

1039. 到底买不买(20)

1039. 到底买不买&#xff08;20&#xff09; 小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串&#xff0c;但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下&#xff0c;某串珠子里是否包含了全部自己想要的珠子&#xff1f;如果是&#xff0c…

Exynos4412 ADC 设备驱动开发

具体ADC硬件知识及裸机驱动请看&#xff1a; Exynos4412裸机开发 —— A/D转换器 1、原理图如下&#xff1a; 2、相关寄存器信息 ADC_BASE 0x126C0000ADCCON 0x0000 1<<0 | 1<<14 | 0X1<<16 | 0XFF<<6ADCDLY 0x000…

mongodb morphia

原文&#xff1a;http://www.blogjava.net/watchzerg/archive/2012/09/20/388109.html快速开始&#xff1a;Entitypublic class Hotel {Id private ObjectId id;private String name;private int stars;Embeddedprivate Address address;}Embeddedpublic class Address {privat…

2017 《Java技术预备作业 》1501 乔 赫

1.阅读邹欣老师的博客,谈谈你期望的师生关系是什么样的&#xff1f; 师生关系为亦师亦友&#xff0c;但不缺少老师的严肃 2.你有什么技能&#xff08;学习&#xff0c;棋类&#xff0c;球类&#xff0c;乐器&#xff0c;艺术&#xff0c;游戏&#xff0c;......&#xff09;比大…

Python 爬虫进阶二之 PySpider 框架安装配置

PySpider官方文档 项目地址 官方文档 安装 phantomjs PhantomJS 是一个基于 WebKit 的服务器端 JavaScript API。它全面支持 web 而不需浏览器支持&#xff0c;其快速、原生支持各种 Web 标准&#xff1a;DOM 处理、CSS 选择器、JSON、Canvas 和 SVG。 PhantomJS 可以用于页…

Exynos4412 中断驱动开发(三)—— 设备树中中断节点的创建

提到中断就必须了解到GIC&#xff0c;下面先了解一下GIC 一、GIC概念 GIC&#xff08;Generic Interrupt Controller&#xff09;是ARM公司提供的一个通用的中断控制器。GIC通过AMBA&#xff08;Advanced Microcontroller Bus Architecture&#xff09;这样的片上总线连接到一个…

老码农:如何写出让自己满意的代码

今天有位朋友在微博上问我这样一个问题&#xff1a; “老码农的自留地 &#xff0c;最近出于学习目的写一个管理系统&#xff0c;越到后边&#xff0c;越觉得自己前边的代码写得烂。前辈&#xff0c;我想让代码写得更好一点&#xff0c;能不能谈谈你的经验&#xff0c;给我指点…

Python 爬虫进阶三之 Scrapy 框架安装配置

初级的爬虫我们利用 urllib 和 urllib2 库以及正则表达式就可以完成了&#xff0c;不过还有更加强大的工具&#xff0c;爬虫框架 Scrapy&#xff0c;这安装过程也是煞费苦心哪&#xff0c;在此整理如下。 官网 官方安装文档 安装python 安装 Python 安装过程我就不多说啦&a…