XPath 读书笔记
<?xml version="1.0" encoding="ISO-8859-1"?>
<books>
<book type=”hardback”>
<title>Atlas Shrugged</title>
<author>Ayn Rand</author>
<isbn>0525934189</isbn>
</book>
<book type=”paperback”>
<title>A Burnt-Out Case</title>
<author>Graham Greene</author>
<isbn>0140185399</isbn>
</book>
</books>
每个结点可以是以下七个类型之一:根(root)、元素(element)、属性(attribute)、正文(text)、命名空间(namespace)、处理指令(processing instruction)和注释(comment)
所有的book元素://books/book
双正斜杠(//)表示返回XML文档中的所有符合查找准则的元素,而忽略文档中元素的位置级别。
所有的ISBN元素:/books/book/isbn
返回如下的元素:
<books>
<book type=”hardback”>
<isbn>0525934189</isbn>
</book>
<book type=”paperback”>
<isbn>0140185399</isbn>
</book>
</books>
所有标题为Atlas Shrugged的book元素:/books/book[title=”Atlas Shrugged”]
/books/book[author]
方括号符号让你使用属性作为查找准则
所有type属性值为hardback的书://book[@type=”hardback”]
返回下面的元素:
<book type=”hardback”>
<title>Atlas Shrugged</title>
<author>Ayn Rand</author>
<isbn>0525934189</isbn>
</book>
方括号符号在XPath文档中称为谓词,方括号的另外一个用途是标识需要检索的项数。
返回第一个book元素:/books/book[1]
<book type=”hardback”>
<title>Atlas Shrugged</title>
<author>Ayn Rand</author>
<isbn>0525934189</isbn>
</book>
用通配符(*)可以很容易的检索到在根结点下的所有元素。
所有的book元素:/books/*
所有属性type值为hardcover或softcover的book元素://books/book[@type=”hardcover”] | //books/book[@type=”softcover”]
符号(|)与逻辑OR操作符相同。
语句的第一个字符决定参考点,以正斜杠(/)开始的语句被看作查询时将使用绝对路径。
使用相对路径的例子:
在当前的参考点下开始查找
book/*
单个圆点表示选择当前结点,双圆点表示选择父结点。
当前结点的父结点的所有子结点:
../*
==============================================================================================================
<A id="a1">
<B id="b1">
<C id="c1">
<B name="b"/>
<D id="d1"/>
<E id="e1"/>
<E id="e2"/>
</C>
</B>
<B id="b2"/>
<C id="c2">
<B/>
<D id="d2"/>
<F/>
</C>
<E/>
</A>
/A/B/C[1] A元素→B元素→C元素的第一个子元素 name值为b的B元素
/A/B/C[last()] A元素→B元素→C元素的最后一个子元素 id值为e2的E元素
/A/B/C[position()>1] A元素→B元素→C元素之下的位置号大于1的元素 id值为d1的D元素和两个具有id值的E元素
//B[@id] 所有具有属性id的B元素 id值为b1和b2的两个B元素
//B[@*] 所有具有属性的B元素 两个具有id属性的B元素和一个具有name属性B元素
//B[not(@*)] 所有不具有属性的B元素 A元素→C元素下的B元素
//B[@id="b1"] id值为b1的B元素 A元素下的B元素
//E/parent::* 所有E节点的父节点元素 id值为a1的A元素和id值为c1的C元素
//F/ancestor::* 所有F元素的祖先节点元素 id值为a1的A元素和id值为c2的C元素
/A/child::* A的子元素 id值为b1、b2的B元素,id值为c2的C元素,以及没有任何属性的E元素
/A/descendant::* A的所有后代元素 除A元素以外的所有其它元素
//F/self::* 所有F的自身元素 F元素本身
//F/ancestor-or-self::* 所有F元素及它的祖先节点元素 F元素、F元素的父节点C元素和A元素
/A/C/descendant-or-self::* 所有A元素→C元素及它们的后代元素 id值为c2的C元素、该元素的子元素B、D、F元素
/A/C/following-sibling::* A元素→C元素的紧邻的后序所有兄弟节点元素 没有任何属性的E元素
/A/C/preceding-sibling::* A元素→C元素的紧邻的前面所有兄弟节点元素 id值为b1和b2的两个B元素
/A/B/C/following::* A元素→B元素→C元素的后序的所有元素 id为b2的B元素、无属性的C元素、无属性的B元素、id为d2的D元素、无属性的F元素、无属性的E元素。
/A/C/preceding::* A元素→C元素的前面的所有元素 id为b2的B元素、id为e2的E元素、id为e1的E元素、id为d1的D元素、name为b的B元素、id为c1的C元素、id为b1的B元素
转载于:https://www.cnblogs.com/RobotTech/archive/2006/11/06/552242.html
XPath 读书笔记相关推荐
- 微服务集成——《微服务设计》读书笔记
一.理想的集成应该是什么样的? 1.避免破坏性修改 如果在一个微服务的响应中添加一个字段,服务的消费方不应该受到影响. 2.保证API的技术无关性 微服务之间的通信应该是与技术无关的. 3.使服务的消 ...
- 【读书笔记】知易行难,多实践
前言: 其实,我不喜欢看书,只是喜欢找答案,想通过专业的解答来解决我生活的困惑.所以,我听了很多书,也看了很多书,但看完书,没有很多的实践,导致我并不很深入在很多时候. 分享读书笔记: <高效1 ...
- 读书笔记:编写高质量代码--web前端开发修炼之道(二:5章)
读书笔记:编写高质量代码--web前端开发修炼之道 这本书看得断断续续,不连贯,笔记也是有些马虎了,想了解这本书内容的童鞋可以借鉴我的这篇笔记,希望对大家有帮助. 笔记有点长,所以分为一,二两个部分: ...
- 《编程匠艺》读书笔记
<编程匠艺>读书笔记之一 <编程匠艺>读书笔记之二 <编程匠艺>读书笔记之三 <编程匠艺>读书笔记之四 <编程匠艺>读书笔记之五 <编 ...
- 《Java: The Complete Reference》等书读书笔记
春节期间读了下<Java: The Complete Reference>发现这本书写的深入浅出,我想一个问题,书中很多内容我们也知道,但是为什么我们就写不出这样一本书,这么全面,这么系统 ...
- oracle直查和call哪个更快,让oracle跑的更快1读书笔记二
当前位置:我的异常网» 数据库 » <>读书笔记二 <>读书笔记二 www.myexceptions.net 网友分享于:2013-08-23 浏览:9次 <> ...
- 《JavaScript面向对象精要》读书笔记
JavaScript(ES5)的面向对象精要 标签: JavaScript 面向对象 读书笔记 2016年1月16日-17日两天看完了<JavaScript面向对象精要>(参加异步社区的活 ...
- 《The Art of Readable Code》 读书笔记 01
放假前在学校图书馆借了一本新书<The Art of Readable Code>,寒假回来看看,写写其中的Key Idea .summary和一些读书笔记. Preface 前言部分主要 ...
- 读书笔记(2) OpenLayers中的图层
OpenLayers有多个不同的图层类,每一个都可以连接到不同的地图服务器.例如通过Layer.WMS类可以连接到WMS地图服务器,通过Layer.Google类可以连接到谷歌地图服务器.OpenLa ...
最新文章
- 资源 | 10x Python开发者必读:本月Python文章TOP 10
- 深浅复制的的理解与区别
- Linux Restart PHP
- Windows过滤驱动程序的概念
- 【项目实战】vue-springboot-pytorch前后端结合pytorch深度学习 html打开本地摄像头 监控人脸和记录时间
- php swoole websocket vue 实现聊天室案例
- python函数降低编程复杂度_Python重构此函数,将其认知复杂度从19降低到允许的15...
- redirect()重新定向·
- spring源码-第三个后置处理器
- android实现模拟微信调用相机和手机图库更换头像
- c语言矩形法e3x x7,矩形法(梯形法)求定积分的方法
- 深响|对话THE9演唱会主创:技术打开想象力,未来的娱乐还能这么玩
- IE、FF、Safari、OP不同浏览器兼容报告
- WPS的新建文档的体验
- unity3d英语单词拼写小游戏Pics Quiz Maker With Categories 3.0
- OpenSearch 简单学习
- Springboot配置Swagger2
- 架设linux服务器下的samba,Linux 服务器搭建之Samba服务
- arduino动态刷新显示_360Hz刷新率加Fast IPS,这是电竞显示器的未来?不见得
- Sigrok逻辑分析仪软件(基于CY7C68013A)
热门文章
- 解决ifconfig命令未找到
- 空扫描Idle Scanning
- Xamarin基础命名空间Microsoft.SqlServer.Server
- Swift2.0语言教程之Swift2.0语言中的标准函数
- go python php 压力测试_pyLot 基于python的压力测试工具
- 他们拿走腾讯广告百万奖金,我算是知道票圈广告为啥那么多赞了
- Facebook狂撒20万美元,悬赏用AI检测P图盗版问题
- 武大首位女院士逝世,国际再生资源领域最高奖中国第一人,享年80岁
- 「我要出轨了」!伯克利的这个AI,可以预测机器人何时将脱离
- 谷歌TF2.0凌晨发布!“改变一切,力压PyTorch”