原文地址:http://www.cnblogs.com/zhaozhan/archive/2009/09/10/1564396.html

XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。

XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 同时被构建于 XPath 表达之上。

推荐一个挺不错的网站:http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html  里面有很不错的例子,下面的例子中红色字体表示使用对 应语法获取的元素(或属性)。

XPath轴(XPath Axes)可定义某个相对于当前节点的节点集:

1、child  选取当前节点的所有子元素

2、parent  选取当前节点的父节点

3、descendant 选取当前节点的所有后代元素(子、孙等)

4、ancestor  选取当前节点的所有先辈(父、祖父等)

5、descendant-or-self选取当前节点的所有后代元素(子、孙等)以及当前节点本身

6、ancestor-or-self  选取当前节点的所有先辈(父、祖父等)以及当前节点本身

7、preceding-sibling 选取当前节点之前的所有同级节点

8、following-sibling 选取当前节点之后的所有同级节点

9、preceding   选取文档中当前节点的开始标签之前的所有节点

10、following  选取文档中当前节点的结束标签之后的所有节点

11、self选取当前节点

12、attribute  选取当前节点的所有属性

13、namespace选取当前节点的所有命名空间节点

XPath轴指定上下文的节点和要选择节点的关系。ancestor, descendant, following, preceding 和self轴(axis)分割了XML文档(忽略属性节点和命名空间节点), 不能交迭,

//GGG/ancestor::*

<AAA>  
     <BBB>  
          <CCC/>  
          <ZZZ/>  
     </BBB>  
     <XXX>  
          <DDD>  
               <EEE/>  
               <FFF>  
                    <HHH/>  
                    <GGG>  
                         <JJJ>  
                              <QQQ/>  
                         </JJJ>  
                         <JJJ/>  
                    </GGG>  
                    <HHH/>  
               </FFF>  
          </DDD>  
     </XXX>  
     <CCC>  
          <DDD/>  
     </CCC>  
  </AAA>

//GGG/descendant::*

<AAA>  
     <BBB>  
          <CCC/>  
          <ZZZ/>  
     </BBB>  
     <XXX>  
          <DDD>  
               <EEE/>  
               <FFF>  
                    <HHH/>  
                    <GGG>  
                         <JJJ>  
                              <QQQ/>  
                         </JJJ>  
                         <JJJ/>  
                    </GGG>  
                    <HHH/>  
               </FFF>  
          </DDD>  
     </XXX>  
     <CCC>  
          <DDD/>  
     </CCC>  
   </AAA>

//GGG/preceding::*

<AAA>  
     <BBB>  
          <CCC/>  
          <ZZZ/>  
     </BBB>  
     <XXX>  
          <DDD>  
               <EEE/>  
               <FFF>  
                    <HHH/>  
                    <GGG>  
                         <JJJ>  
                              <QQQ/>  
                         </JJJ>  
                         <JJJ/>  
                    </GGG>  
                    <HHH/>  
               </FFF>  
          </DDD>  
     </XXX>  
     <CCC>  
          <DDD/>  
     </CCC>  
  </AAA>

//GGG/following::*

<AAA>  
     <BBB>  
          <CCC/>  
          <ZZZ/>  
     </BBB>  
     <XXX>  
          <DDD>  
               <EEE/>  
               <FFF>  
                    <HHH/>  
                    <GGG>  
                         <JJJ>  
                              <QQQ/>  
                         </JJJ>  
                         <JJJ/>  
                    </GGG>  
                    <HHH/>  
               </FFF>  
          </DDD>  
     </XXX>  
     <CCC>  
          <DDD/>  
     </CCC>  
  </AAA>

//GGG/self::*

<AAA>  
     <BBB>  
          <CCC/>  
          <ZZZ/>  
     </BBB>  
     <XXX>  
          <DDD>  
               <EEE/>  
               <FFF>  
                    <HHH/>  
                    <GGG>  
                         <JJJ>  
                              <QQQ/>  
                         </JJJ>  
                         <JJJ/>  
                    </GGG>  
                    <HHH/>  
               </FFF>  
          </DDD>  
     </XXX>  
     <CCC>  
          <DDD/>  
     </CCC>  
   </AAA>

//GGG/ancestor::* | //GGG/descendant::* | //GGG/following::* | //GGG/preceding::* | //GGG/self::*

<AAA>  
     <BBB>  
          <CCC/>  
          <ZZZ/>  
     </BBB>  
     <XXX>  
          <DDD>  
               <EEE/>  
               <FFF>  
                    <HHH/>  
                    <GGG>  
                         <JJJ>  
                              <QQQ/>  
                         </JJJ>  
                         <JJJ/>  
                    </GGG>  
                    <HHH/>  
               </FFF>  
          </DDD>  
     </XXX>  
     <CCC>  
          <DDD/>  
     </CCC>  
   </AAA>

XPath学习:轴(14)——总结的更多相关文章

  1. XPath学习:轴(3)——descendant

    XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历. XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointe ...

  2. Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法

    Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法 Ext.Net GridPanel可以进行Group操作,例如: 如何启用Grouping功能呢?只需要在Grid ...

  3. SQL反模式学习笔记14 关于Null值的使用

    目标:辨别并使用Null值 反模式:将Null值作为普通的值,反之亦然 1.在表达式中使用Null: Null值与空字符串是不一样的,Null值参与任何的加.减.乘.除等其他运算,结果都是Null: ...

  4. golang学习笔记14 golang substring 截取字符串

    golang学习笔记14 golang substring 截取字符串golang 没有java那样的substring函数,但支持直接根据 index 截取字符串mystr := "hel ...

  5. mybatis学习笔记(14)-查询缓存之中的一个级缓存

    mybatis学习笔记(14)-查询缓存之中的一个级缓存 标签: mybatis mybatis学习笔记14-查询缓存之中的一个级缓存 查询缓存 一级缓存 一级缓存工作原理 一级缓存測试 一级缓存应用 ...

  6. Python3+Selenium3+webdriver学习笔记14(等待判断 鼠标事件 )

    !/usr/bin/env python -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记14(等待判断 鼠标事件 )'''from selenium im ...

  7. 第2节 mapreduce深入学习:14、mapreduce数据压缩-使用snappy进行压缩

    第2节 mapreduce深入学习:14.mapreduce数据压缩-使用snappy进行压缩 文件压缩有两大好处,节约磁盘空间,加速数据在网络和磁盘上的传输. 方式一:在代码中进行设置压缩 代码: ...

  8. 并发编程学习笔记(14)----ThreadPoolExecutor(线程池)的使用及原理

    1. 概述 1.1 什么是线程池 与jdbc连接池类似,在创建线程池或销毁线程时,会消耗大量的系统资源,因此在java中提出了线程池的概念,预先创建好固定数量的线程,当有任务需要线程去执行时,不用再去 ...

  9. 【转】 C#学习笔记14——Trace、Debug和TraceSource的使用以及日志设计

    [转] C#学习笔记14——Trace.Debug和TraceSource的使用以及日志设计 Trace.Debug和TraceSource的使用以及日志设计   .NET Framework 命名空 ...

随机推荐

  1. Android 利用日志消息调试程序

    Log类提供了下面几个静态方法 , Log.e():  错误: Log.w():  警告: Log.i():   信息: Log.d();   调试: Log.v();   详细:

  2. matlab练习程序(构造简单多边形)

    简单多边形是指各边不相交的多边形. 首先计算出所有顶点中心位置. 然后求每个顶点与中心的极角. 再对极角进行排序. 连接排序后的点就行了. 结果如下: matlab代码如下: clear all;cl ...

  3. SQL分布式查询、跨数据库查询

    --[方法1]连接服务器方法 --step1 创建链接服务器  exec sp_addlinkedserver     'srv_lnk','','SQLOLEDB', 'ip地址'  exec sp ...

  4. 2016.6.20 计算机网络复习要点第三章之CSMA/CD协议

    1.最早的以太网是将许多计算机都连接到一根总线上: (1)总线的特点是:当一台计算机发送数据时,总线上的所有计算机都检测到这个数据,这种就是广播通信方式: (2)为了实现在总线上的一对一通信,可以使每 ...

  5. ARP缓存记录种类动态条目和静态条目

    ARP缓存记录种类动态条目和静态条目 为使广播量最小,ARP维护IP地址到MAC地址映射的缓存以便将来使用.根据缓存的有效期时间,ARP缓存中包含动态和静态条目本文选自ARP协议全面实战手册. 这里首 ...

  6. Train Problem I (HDU 100题纪念)

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...

  7. 逆序数 POJ 2299 Ultra-QuickSort

    题目传送门 /* 题意:就是要求冒泡排序的交换次数. 逆序数:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序. 一个排列中逆序的总数就称为这个排列的逆 ...

  8. 使用 IL 实现类型转换

    在之前的文章中,我大致介绍过一些类型间的隐式和显式类型转换规则.但当时并未很仔细的研究过<CSharp Language Specification>,因此实现并不完整.而且只部分解决了类 ...

  9. 【翻译】使用Knockout, Web API 和 ASP.Net Web Forms 进行简单数据绑定

    原文地址:http://www.dotnetjalps.com/2013/05/Simple-data-binding-with-Knockout-Web-API-and-ASP-Net-Web-Fo ...

  10. 阿牛的EOF牛肉串[HDU2047]

    阿牛的EOF牛肉串 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total S ...