原文地址: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. C语言位取反问题

    1 具体是先把十进制的数先转换成二进制的原码, 按位取反最后一位加一,然后“按权展开”,得到十进制的结果, 如果第一位是1(指转换成二进制的原码中的第一位),说明故是负数所以要在结果前面加上负号-. ...

  2. Codeforces Gym 100513G G. FacePalm Accounting

    G. FacePalm Accounting Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513 ...

  3. Listview点击事件

    listview = (ListView) findViewById(R.id.listview); // 填充data数据 data = new ArrayList<String>(); ...

  4. js执行顺序

    我们知道有个全局的 window对象,js的一切皆window上的属性和方法.window上有个window.document属性,记录了整个html的dom树,document是顶层. body 和 ...

  5. ITEYE中的读书笔记:重构其实就是持续改进

    原文地址:http://hawkon.iteye.com/blog/2093338#bc2355877 前段时间同事参加ITEYE的试读有奖, 没想到得了个奖,拿到一本书.由于同事的推荐我也认真读了一 ...

  6. Android 蓝牙 BLE 开发笔记

    最近公司头戴换了一块蓝牙4.0 BLE模块,所以我们Android组要适配 BLE.Android BLE 需要 4.3 以上系统,api 还是非常简单的, 第一步就是扫描, 扫描到设备后就可以连接了 ...

  7. BZOJ3356 : [Usaco2004 Jan]禁闭围栏

    首先将坐标离散化,考虑从左往右扫描线 碰到插入操作则插入 碰到删除操作的: 当前包含i的矩形数=y1在[1,y2[i]]之间的矩形数-y2在[1,y1[i]-1]之间的矩形数 用两棵树状数组维护即可, ...

  8. Codeforces Round #192 (Div. 2) B. Road Construction

    #include <iostream> #include <vector> using namespace std; int main(){ int n,m; cin > ...

  9. 【POJ】2406 Power Strings

    http://poj.org/problem?id=2406 题意:给定一个字符串 L,已知这个字符串是由某个字符串 S 重复 R 次而得到的,求 R 的最大值.(长度<=1000000) #i ...

  10. Android之adb异常

    Android使用adb模拟器时出现"unable to establish connection to adb"."ADB server didn't ACK" ...