一、基本语法

1、以 / 斜线开始,该路径表示到一个元素下的绝对路径

2、如果路径以双斜线 // 开头, 则表示选择文档中所有满足双斜线//之后规则的元素(无论层级关系)

3、星号 * 表示选择所有由星号之前的路径所定位的元素(/AAA/BBB/DDD/* 选择AAA/BBB/DDD下的所有元素;/*/*/*/BBB选择第四层级为BBB的所有元素)

4、[]和last()

方块号里的表达式可以进一步的指定元素, 其中数字表示元素在选择集里的位置, 而last()函数则表示选择集中的最后一个元素.如(/AAA/BBB[0]和/AAA/BBB[last()])

5、属性(有无属性)

//@id  选择所有属性为id的元素     //BBB[@id]    选择有id属性的BBB元素   //BBB[@name]   选择有name属性的BBB元素      //BBB[@*]  选择有任意属性的BBB元素

//BBB[not(@*)]   选择没有属性的BBB元素

6、属性2(带值的属性)

normalize-space函数删除了前部和尾部的空格, 并且把连续的空格串替换为一个单一的空格

   //BBB[@id='b1'] 选择含有属性id且其值为'b1'的BBB元素     //BBB[@name='bbb']  选择含有属性name且其值为'bbb'的BBB元素  //BBB[normalize-space(@name)='bbb'] 选择含有属

性name且其值(在用normalize-space函数去掉前后空格后)为'bbb'的BBB元素

7、count()函数

//*[count(BBB)=2] 选择含有2个BBB子元素的元素   //*[count(*)=2]选择含有2个子元素的元素

8、name()函数

name()函数返回元素的名称, start-with()函数在该函数的第一个参数字符串是以第二个参数字符开始的情况返回true, contains()函数当其第一个字符串参数包含有第二个字符串参数时返回true.

//*[name()='BBB'] 选择所有名称为BBB的元素(这里等价于//BBB)     //*[starts-with(name(),'B')]选择所有名称以"B"起始的元素     //*[contains(name(),'C')]选择所有名称包含"C"的元素

9、string-length函数

string-length函数返回字符串的字符数

//*[string-length(name()) = 3]  选择名字长度为3的元素   //*[string-length(name()) < 3] 选择名字长度小于3的元素

10、分隔符 |

多个路径可以用分隔符 | 合并在一起

//CCC | //BBB 选择所有的CCC和BBB元素

11、descendant (后代)轴

descendant (后代)轴包含上下文节点的后代,一个后代是指子节点或者子节点的子节点等等, 因此descendant轴不会包含属性和命名空间节点.

/descendant::*   选择文档根元素的所有后代.即所有的元素被选择   /AAA/BBB/descendant::*    选择/AAA/BBB的所有后代元素   //CCC/descendant::DDD 选择所有以CCC为祖先元素的DDD元素

12、parent轴

parent轴(axis)包含上下文节点的父节点, 如果有父节点的话

//DDD/parent:: *选择DDD元素的所有父节点

13、ancestor轴

选择祖先节点

/AAA/BBB/DDD/CCC/EEE/ancestor::*  选择EEE的所有根节点   //FFF/ancestor::*  选择FFF元素的祖先节点

14、following-sibling轴

following-sibling轴(axis)包含上下文节点之后的所有兄弟节点

/AAA/BBB/following-sibling::*  选择与BBB同级后边的兄弟节点

15、preceding-sibling 轴

preceding-sibling 轴(axis)包含上下文节点之前的所有兄弟节点

与14刚好相反,一个是之前,一个是之后

16、following轴

following轴(axis)包含同一文档中按文档顺序位于上下文节点之后的所有节点, 除了祖先节点,属性节点和命名空间节点

其后的所有节点,包含不同级别的等只要是在节点之后的所有节点

17、descendant-or-self 轴

descendant-or-self 轴(axis)包含上下文节点本身和该节点的后代节点

18、ancestor-or-self 轴(axis)

ancestor-or-self 轴(axis)包含上下文节点本身和该节点的祖先节点

XPath学习的更多相关文章

  1. XPath 学习二: 语法

    XPath 使用路径表达式来选取 XML 文档中的节点或节点集.节点是通过沿着路径 (path) 或者步 (steps) 来选取的. 下面列出了最有用的路径表达式: 表达式 描述 nodename 选 ...

  2. xpath 学习一: 节点

    xpath 中,有七种类型的节点: 元素.属性.文本.命名空间.处理指令.注释.以及根节点 树的根成为文档节点或者根节点. 节点关系: Parent, Children, sibling(同胞), A ...

  3. XML Xpath学习

    Xpath是一门在xml文档中查找信息的语言. Xpath可用来在xml文档中对元素和属性进行遍历. <1>路径表达式1: 斜杠(/)作为路径内部的分隔符 同一个路径有绝对路径和相对路径两 ...

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

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

  5. XPath学习:轴(14)——总结

    原文地址:http://www.cnblogs.com/zhaozhan/archive/2009/09/10/1564396.html XPath 是一门在 XML 文档中查找信息的语言.XPath ...

  6. XPath学习:parent,child

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

  7. HtmlAgilityPackage XPath学习

    最近的开发中要用到htmlAgilityPackage, 所以记录一下XPath相关知识! XPath 简介 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对 ...

  8. Xpath学习笔记

    最近复习自己上一年的课本,想起来刚学那个时候想做一个写日记的软件. 想不如做,用控制台瞎写了一个,一做就成了,没什么bug,期间使用Xpath来读数据,所以就稍微学了一下. 学习过程就这样做一点笔记, ...

  9. python xpath学习

    一.选取节点: 二.谓词: 注意:在scrapy中用xpath进行搜索时,如果使用相对路径,要加上.,如,不然搜索的是整个文档.

  10. 抓包分析、多线程爬虫及xpath学习

    1.抓包分析 1.1 Fiddler安装及基本操作 由于很多网站采用的是HTTPS协议,而fiddler默认不支持HTTPS,先通过设置使fiddler能抓取HTTPS网站,过程可参考(https:/ ...

随机推荐

  1. iOS 新手引导页图片适配及其尺寸大全

    早期新手引导页只需要几张图片就可以解决了,随着屏幕尺寸的的越来越多,新手引导页的尺寸适配起来越来越麻烦,否则就会出现尺寸不匹配,图片被拉伸的情况 目前应该是有2种方法来解决这个问题 方法1: 根据每款 ...

  2. lua工具库penlight--06数据(二)

    词法扫描 虽然 Lua 的字符串模式匹配是非常强大,但需要更强大的东西.pl.lexer.scan可以提供标记字符串,按标记机分类数字.字符串等. > lua -lpl Lua 5.1.4  C ...

  3. 关于css中层叠性的一点理解

    关于css层叠性的一点理解 标签(空格分隔): html css 我们平时在写css的时候会遇到这样的情况 <!DOCTYPE html> <html lang="en&q ...

  4. pl/sql 实例精解 06

    1. 简单循环 1: LOOP 2: statement1; 3: statement2; 4: EXIT WHEN condition; 5: END LOOP; 6: statement3; 也可 ...

  5. python urllib2导出elasticsearch数据时 返回 "urllib2.HTTPError: HTTP Error 500: Internal Server Error"

    0.业务场景 将ES中某个index的某个字段的所有数据,导出到文件中 1.ES数据导出方法简述 ES数据导出方法,我主要找到了以下几个方面,欢迎大家补充: ES官方API:snapshot and ...

  6. centos7 禁用每次sudo 需要输入密码

    安装完centos7后,默认没有启用sudo,首先应该是对sudo进行设置.sudo的作用就是使当前非root用户在使用没有权限的命令 时,直接在命令前加入sudo,在输入自己当前用户的密码就可以完成 ...

  7. Java线程工作内存与主内存变量交换过程及volatile关键字理解

    Java线程工作内存与主内存变量交换过程及volatile关键字理解 1. Java内存模型规定在多线程情况下,线程操作主内存变量,需要通过线程独有的工作内存拷贝主内存变量副本来进行.此处的所谓内存模 ...

  8. WPF数据验证(4)——响应与获取验证错误

    1780 前面的示例中,有关用户接受到错误的唯一指示是在违反规则的文本框周围的红色轮廓.为了提供更多信息,可以处理 Error 事件,但存储或清除错误时会引发该事件,但前提是必须确保已将 Bindin ...

  9. ASP.NET中Dictionary基本用法实例分析

    本文实例讲述了ASP.NET中Dictionary基本用法.分享给大家供大家参考,具体如下: //Dictionary位于System.Collections.Generic命名空间之下 /*  * ...

  10. Linux下文件属性(drwxr-xr-x)详解以及(-rwxrwxrwx=777)(转)

    权限的计算是除去第一位字母开始,权限都是三个符号为一组合,其中-表没有这个权限. drwxr-xr-x的意思解释: ls -al 得到如下列表: drwxr-xr-x 4 oracle dba 409 ...