XPath语法

XPath的语法

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

匹配表达式:

Xpath可以使用类似正则表达式来匹配HTML文件当中的内容,常见的匹配表达式如下

nodename

选取nodename节点的所有的子节点

/

从当前的节点当中选取直接子节点

//

从当前的节点选取子孙节点

.

选取当前的节点

..

选取当前的节点的父节点

@

选取属性

父节点表示的是当前节点的上一层节点

子节点表示当前节点的下一层节点,子孙节点表示当前节点的所有下层节点

谓词

查找某个特定的节点或者包含某个指定的值的节点可以使用Xpath当中的谓语,通常被嵌在路径后面的方括号当中

/html/body/div[1]

选取属于body子节点下的第一个div节点

/html/body/div[last()]

选取属于body子节点下的最后一个div节点

/html/body/div[last()-1]

选取属于body子节点下的倒数第二个div节点

/html/body/div[position()<3]

选取属于body子节点下的前两个div节点

/html/body/div[@id]

选取属于body子节点下的带有id属性的div节点

/html/body/div[@id="content"]

选取属于body子节点下的id属性为content的div的节点

/html/body/div[xx>10.00]

选取属于body子节点下的xx元素值大于10的节点

选取未知的节点

Xpath通配符可以用来选取未知的XML元素

*

匹配任何的元素节点

@*

匹配任何的属性节点

node()

匹配任何类型的节点

选取若干路径

|选取若干个路径

//book/title|//book/price

选取book元素的所有的title和price元素

//title||//price

选取文档当中的所有的title和priece元素

/bookstore/book/title|//price

选取属于bookstore元素的book元素的所有的title元素,以及文档当中的所有的price元素

Xpath的轴Axes

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

ancestor

选取当前的节点的所有先辈(父,祖父)

ancestor-or-self

选取当前的节点的所有的先辈以及当前的节点的本身

attribute

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

child

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

descendant

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

descendant-or-self:

选取当前的所有的后代元素,以及当前节点的本身

following

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

following-sibling

选取当前节点之后的所有的兄弟节点

namespace

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

parent

选取当前的节点的父节点

preceding:

选取文档当前节点的开始便签之前的所有的节点

preceding-sibling:

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

Self

选取当前的节点

Xpath运算符

|

计算两个节点集

+

加法

-

减法

*

乘法

div

触发

=

等于

!=

不等于

<

小于

功能函数

当对象仅仅掌握其部分的特征,需要模糊搜索该类的对象的时候可以使用Xpath当中的提供的功能进行模糊搜索

start-withs

//div[start-with(@id,"co")]

选取id值为co开头的div节点

contains

//div[contains(@id,"co")]

选取id值包含co的div的节点

and

//div[contains(@id,"co") and contains(@id,"en")]

选取id值包含co和en的div节点

text()

//li[contains(text(),"first")]

选取节点文本包含first的div节点

加载 XML 文档

所有的现代浏览器都支持使用XMLHttpRequest来加载XML文档的方法

针对大多数浏览器的代码var xmlhtto=new XMLHttpRequest()

选取节点

IE使用selectNodes方法xmlDoc.selectNodes(xpath);

Firefox,Chrom,Opera以及Safari使用evaluate()方法

xmlDoc.evaluate(xpath,xmlDoc,null,XPathResult.ANY_TYPE,null);

选取所有的title:/boolstore/book/title

选取第一个book的title:/bookstore/book[1]/title

选取所有的价格:

/bookstore/book/priece/text()

选取价格高于35的price节点:

/bookstore/book[price>35]/price

​​

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值