XPath 简介

本文介绍了XPath的基本概念及其作为W3C标准之一的主要目的,并通过实例展示了如何使用XPath路径表达式在XML文档中进行数据检索。

XPath 简介

Back to Documentation Index

XPath 同样也是 w3c 的标准之一,他的主要目的是为 xslt 和 xpointer 提供共用的统一的语法,在 XML 文档中进行信息的寻址和数据的检索。他提供了对 string,number,booleans 基本数据类型的操作功能。 XPath 使用类似于普通的文件系统寻址方式,对 XML 中的数据进行匹配(类似于 "/bookstore/book/")。并且 XPath 还提供很多标准库函数,以进行更多复杂的处理操作。

XPath 的语法

XPath 使用路径表达式在 XML 文档中选择节点/节点集合。下面通过一些实例来看看 XPath 的语法。

在下面的例子中,使用如下的 XML 文档:

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
  <book>
    <title lang="eng">Harry Potter</title>
    <price>29.99</price>
  </book>
  <book>
    <title lang="eng">Learning XML</title>
    <price>39.95</price>
  </book>
</bookstore>

对该 XML 可用如下的路径表达式进行数据的检索:

  • '/bookstore/book'
    检索根节点( bookstore )下的 book 节点
  • '//book'
    检索文档中所有的 book 节点,不管该节点在 xml 中的什么位置。对于上个例子来说,就是所有 '/bookstore/book' 节点 (当然,如果节点下如果还有 book 节点,那么同样会选择出来)
  • '//@lang'
    检索文档中所有名为 lang 的属性,@ 表示属性

还可以利用谓词来进行查询:

  • '/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"]'
    检索所有拥有一个名为 lang,值为 eng 的属性的 title 节点
  • '/bookstore/book[price>35.00]/title'
    检索所有价钱大于 35 的 book 的 title 节点

还可以使用*,@*,node()来检索未知的节点:

  • '/bookstore/*'
    检索 bookstore 的所有子节点
  • '//*'
    检索文档中的所有节点.
  • '//title[@*]'
    检索具有任意属性的 title 节点

还可以使用'|'来表示对从多个路径表达式来得到结果集:

  • '//book/price | //book/title'
    检索所有 book 节点下的 price 节点和 title 节点

XPath 的操作符和函数

XPath 提供了 "+,-,*,div,>=,<=,or,and" 等操作符进行算术和逻辑的运算。如: '/bookstore/book[price>20 and price<=50]'

关于 XPath 操作符的详细信息。

参考: http://www.w3schools.com/xpath/xpath_operators.asp

XPath 还提供了数百个库函数,包括字符串,数字,错误等处理的函数。以提供强大的功能。

参考: http://www.w3schools.com/xpath/xpath_functions.asp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值