XML学习笔记 4. xpath

Xpath 是W3C制定的用来在XML文档中进行导航和查询的路径表达语句,可以在XML文档层次结构中的相关元素节点及内容进行检索和定位。


xpath的绝对路径为/step1/step2,相对路径为step1/step2/step3 .

xpath是有 / 和step组成,/表示进行下一步的step的开始,而step表示按照当前/提供的路径进行的寻找操作。

step由三个部分组成:      轴坐标符:: 节点测试    【判定谓词】

轴坐标符  AxisSpecifier    表示从当前路径向什么方向进行寻找。:共有13种:

1.ancestor     查找当前路径节点的所有祖先节点

2.ancestor-or-self    查找所有祖先节点和自己

3. attribute      查找当前节点的属性

4:child         查找所有子节点

5. descendant     查找所有后代节点

6.descendant-or-self   查找所有后代节点加自己

7.following       查找当前节点之后的所有节点,之后的节点是指节点的开始标记在当前节点的结束标记之后的节点。

8.following-sibling    查找之后的兄弟节点

9.namespace   查找节点的命名空间

10.parent        当前节点的父节点

11.preceding    当前节点之前的所有节点

12.preceding-sibling   当前节点之前的兄弟节点

13.self        节点自己。


节点测试    NodeTest    对节点进行或名称类型测试,取对应要求名称或类型的节点

//node() 是查找容易节点  //book 是查找容易名字叫book‘的节点


判定谓词    Predicate   使用[]包含,可以调用一些函数来判断是否符合一定的要求

其中一般调用函数来进行判断,常用的函数如下:

string()将内容转换为字符串

string-length()返回字符串长度或者当前节点的字符串长度

contains(string1,string2)判断string1中是否含有string2

starts-with(string1,string2)  string1是否以string2为开头

ends-with(string1,string2)  string1是否以string2为结尾

matches(string , pattern)   string是否匹配对应的正则表达式

name()    返回当前节点的名称

local-name()  返回当前节点的名称   不带命名空间

root()     返回文档节点即根节点

empty()   判断是否为空

exists()   判断是否存在

cout(....)  返回节点的数量

avg(),max(),min(),sum()   分别是  取 属 性 的平均值,最大值,最小值和 和。

position()   返回节点的位置     /book[3]这里是缩写,其实是[position()=3]的判定。position()是从1开始计数的。

last()     返回当前处理的节点序列的数量  //book[last()] 为返回最后一个book


xpath中的一些常用缩写:

无  表示默认的child::寻找子节点

@   表示attribute::

.     表示self::node()即当前节点

..    表示parent::node()即父节点

//    表示/descend-or self::node()/即所有子孙节点和自己的子节点



作业中的几个实例:

1.查找所有非最外层的section元素:

//section//section
/descendant-or-self::node()/section/descendant-or-self::node()/section
/descendant-or-self::node()/section//section


2.查找只包含三个子孙section元素(包括所有后代section)的section元素;

//section[count(descendant::section)=3]
//section[count(descendant-or-self::section)=4]

3.查找出id属性为intro,title元素中包含字符串“Web”的section元素的父节点。
//section[@id="intro"][matches(./title/text(),"Web")]/parent::*
//section[@id="intro"]/title[matches(text(),"Web")]/parent::*/parent::*
/descendant-or-self::node()/section[@id="intro"][matches(./title/text(),"Web")]/parent::*




你可能感兴趣的:(xml,xpath)