XPath学习笔记

一、XPath是干什么的?

XPathW3C的一个标准。它最主要的目的是为了在XML1.0XML1.1文档节点树中定位节点所设计。

XPath是一种表达式语言,XML中查找信息,它的返回值可能是节点,节点集合,原子值,以及节点和原子值的混合等。

二.XPath语法

XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档节点(或成为根节点)。

XPath 使用路径表达式来选取XML 文档中的节点或节点集。节点是通过沿着路径(path) 或者步(steps) 来选取的。

1)表达式 

/

此路径运算符出现在模式开头时,表示应从根节点选择。

//

从当前节点开始递归下降,此路径运算符出现在模式开头时,表示应从根节点递归下降。

.

当前上下文。

..

当前上下文节点父级。

*

通配符;选择所有元素节点与元素名无关。(不包括文本,注释,指令等节点,如果也要包含这些节点请用node()函数)

@

属性名的前缀。

@*

选择所有属性,与名称无关。

:

命名空间分隔符;将命名空间前缀与元素名或属性名分隔。

 

 

 

2谓语

谓语用来查找某个特定的节点或者包含某个指定的值的节点。

谓语被嵌在方括号中。

 

路径表达式

结果

/bookstore/book[1]

选取属于 bookstore 子元素的第一个book 元素。

/bookstore/book[last()]

选取属于 bookstore 子元素的最后一个book 元素。

/bookstore/book[last()-1]

选取属于 bookstore 子元素的倒数第二个book 元素。

/bookstore/book[position()<3]

选取最前面的两个属于 bookstore 元素的子元素的book 元素。

//title[@lang]

选取所有拥有名为 lang 的属性的title 元素。

//title[@lang='eng']

选取所有 title 元素,且这些元素拥有值为eng lang 属性。

/bookstore/book[price>35.00]

选取 bookstore 元素的所有book 元素,且其中的price 元素的值须大于35.00

/bookstore/book[price>35.00]/title

选取 bookstore 元素中的book 元素的所有title 元素,且其中的price 元素的值须大于35.00

 

3XPath

轴可定义相对于当前节点的节点集。

 

轴名称

结果

ancestor

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

ancestor-or-self

选取当前节点的所有先辈(父、祖父等)以及当前节点本身。

attribute

选取当前节点的所有属性。

child

选取当前节点的所有子元素。

descendant

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

descendant-or-self

选取当前节点的所有后代元素(子、孙等)以及当前节点本身。

following

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

namespace

选取当前节点的所有命名空间节点。

parent

选取当前节点的父节点。

preceding

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

preceding-sibling

选取当前节点之前的所有同级节点。

self

选取当前节点。

 

 

4)位置路径表达式

位置路径可以是绝对的,也可以是相对的。

绝对路径起始于正斜杠( / ),而相对路径不会这样。在两种情况中,位置路径均包括一个或多个步,每个步均被斜杠分割:

绝对路径:

/step/step

相对路径

Step/step

每个步均根据当前节点集之中的节点来进行计算

步(step)包括

1)轴(axis

    定义所选节点与当前节点之间的树关系

2)节点测试(node-test

   识别某个轴内部的节点

3)零个或者更多谓语(predicate

      更深入地提炼所选的节点集

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值