posts - 0, comments - 0, trackbacks - 0, articles - 23
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

XPath 简介

Posted on 2006-06-03 11:31 叶舟 阅读(218) 评论(0)  编辑  收藏 所属分类: XML
http://www.lapuasi.com/doc/xpath/

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>
    <titlelang="eng">Harry Potter</title>
    <price>29.99</price>
  </book>
  <book>
    <titlelang="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


只有注册用户登录后才能发表评论。


网站导航: