<?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. 微服务集成——《微服务设计》读书笔记

    一.理想的集成应该是什么样的? 1.避免破坏性修改 如果在一个微服务的响应中添加一个字段,服务的消费方不应该受到影响. 2.保证API的技术无关性 微服务之间的通信应该是与技术无关的. 3.使服务的消 ...

  2. 【读书笔记】知易行难,多实践

    前言: 其实,我不喜欢看书,只是喜欢找答案,想通过专业的解答来解决我生活的困惑.所以,我听了很多书,也看了很多书,但看完书,没有很多的实践,导致我并不很深入在很多时候. 分享读书笔记: <高效1 ...

  3. 读书笔记:编写高质量代码--web前端开发修炼之道(二:5章)

    读书笔记:编写高质量代码--web前端开发修炼之道 这本书看得断断续续,不连贯,笔记也是有些马虎了,想了解这本书内容的童鞋可以借鉴我的这篇笔记,希望对大家有帮助. 笔记有点长,所以分为一,二两个部分: ...

  4. 《编程匠艺》读书笔记

    <编程匠艺>读书笔记之一 <编程匠艺>读书笔记之二 <编程匠艺>读书笔记之三 <编程匠艺>读书笔记之四 <编程匠艺>读书笔记之五 <编 ...

  5. 《Java: The Complete Reference》等书读书笔记

    春节期间读了下<Java: The Complete Reference>发现这本书写的深入浅出,我想一个问题,书中很多内容我们也知道,但是为什么我们就写不出这样一本书,这么全面,这么系统 ...

  6. oracle直查和call哪个更快,让oracle跑的更快1读书笔记二

    当前位置:我的异常网» 数据库 » <>读书笔记二 <>读书笔记二 www.myexceptions.net  网友分享于:2013-08-23  浏览:9次 <> ...

  7. 《JavaScript面向对象精要》读书笔记

    JavaScript(ES5)的面向对象精要 标签: JavaScript 面向对象 读书笔记 2016年1月16日-17日两天看完了<JavaScript面向对象精要>(参加异步社区的活 ...

  8. 《The Art of Readable Code》 读书笔记 01

    放假前在学校图书馆借了一本新书<The Art of Readable Code>,寒假回来看看,写写其中的Key Idea .summary和一些读书笔记. Preface 前言部分主要 ...

  9. 读书笔记(2) OpenLayers中的图层

    OpenLayers有多个不同的图层类,每一个都可以连接到不同的地图服务器.例如通过Layer.WMS类可以连接到WMS地图服务器,通过Layer.Google类可以连接到谷歌地图服务器.OpenLa ...

最新文章

  1. 资源 | 10x Python开发者必读:本月Python文章TOP 10
  2. 深浅复制的的理解与区别
  3. Linux Restart PHP
  4. Windows过滤驱动程序的概念
  5. 【项目实战】vue-springboot-pytorch前后端结合pytorch深度学习 html打开本地摄像头 监控人脸和记录时间
  6. php swoole websocket vue 实现聊天室案例
  7. python函数降低编程复杂度_Python重构此函数,将其认知复杂度从19降低到允许的15...
  8. redirect()重新定向·
  9. spring源码-第三个后置处理器
  10. android实现模拟微信调用相机和手机图库更换头像
  11. c语言矩形法e3x x7,矩形法(梯形法)求定积分的方法
  12. 深响|对话THE9演唱会主创:技术打开想象力,未来的娱乐还能这么玩
  13. IE、FF、Safari、OP不同浏览器兼容报告
  14. WPS的新建文档的体验
  15. unity3d英语单词拼写小游戏Pics Quiz Maker With Categories 3.0
  16. OpenSearch 简单学习
  17. Springboot配置Swagger2
  18. 架设linux服务器下的samba,Linux 服务器搭建之Samba服务
  19. arduino动态刷新显示_360Hz刷新率加Fast IPS,这是电竞显示器的未来?不见得
  20. Sigrok逻辑分析仪软件(基于CY7C68013A)

热门文章

  1. 解决ifconfig命令未找到
  2. 空扫描Idle Scanning
  3. Xamarin基础命名空间Microsoft.SqlServer.Server
  4. Swift2.0语言教程之Swift2.0语言中的标准函数
  5. go python php 压力测试_pyLot 基于python的压力测试工具
  6. 他们拿走腾讯广告百万奖金,我算是知道票圈广告为啥那么多赞了
  7. Facebook狂撒20万美元,悬赏用AI检测P图盗版问题
  8. 武大首位女院士逝世,国际再生资源领域最高奖中国第一人,享年80岁
  9. 「我要出轨了」!伯克利的这个AI,可以预测机器人何时将脱离
  10. 谷歌TF2.0凌晨发布!“改变一切,力压PyTorch”