原文地址: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. 关于Qt的事件循环以及QEventLoop的简单使用

    1.一般我们的事件循环都是由exec()来开启的,例如下面的例子: 1 QCoreApplicaton::exec() 2 QApplication::exec() 3 QDialog::exec() ...

  2. ThinkPHP函数详解:session方法

    ThinkPHP函数详解:session方法 Session方法用于Session 设置.获取.删除和管理操作. Session 用于Session 设置.获取.删除和管理操作 用法    sessi ...

  3. python网页爬虫

    1. 静态页面爬取 这类最简单啦,右键->查看页面源码时,想下载的信息都能够显示在这里,这时只需要直接down页面源码,代码如下: # Simple open web import urllib ...

  4. ==与equals()的区别

    /** * Object类的equals()的声明规则: * public Boolean equals(Object obj) * * Object类的equals()方法比较规则: * 当参数ob ...

  5. android.intent.action.MAIN 与 android.intent.category.LAUNCHER 的验证理解 (转)

    原文地址:android.intent.action.MAIN 与 android.intent.category.LAUNCHER 的验证理解 作者: 第一种情况:有MAIN,无LAUNCHER,程 ...

  6. Codeforces Round #Pi (Div. 2) D. One-Dimensional Battle Ships set乱搞

    D. One-Dimensional Battle ShipsTime Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/con ...

  7. 获取表信息(MSSQL)

    涉及到的系统表汇总 sys.databases sys.objects sys.indexes sys.tables sys.columns sys.data_spaces sys.partition ...

  8. ARP缓存表的构成ARP协议全面实战协议详解、攻击与防御

    ARP缓存表的构成ARP协议全面实战协议详解.攻击与防御 1.4.3  ARP缓存表的构成 在局域网的任何一台主机中,都有一个ARP缓存表.该缓存表中保存中多个ARP条目.每个ARP条目都是由一个IP ...

  9. push和join

    Push,向数组末尾添加元素,并返回长度. Join,将数组按照join参数连接起来. 不同浏览器对JS解析不同,Join比连接字符串快,要用大量数据测试,然后比时间.

  10. python tile

    tile(A,reps) 创建一个数组,通过reps次重复A >>>a=np.arry([0,1,2])#创建了一个数组 >>>np.tile(a,2)#创建了一个 ...