XPath 教程学习笔记

XPath是一种用于在XML文档中定位节点的语言,它提供了一种在XML文档中查找信息的方式。本教程将介绍XPath的基本语法和常用函数,并提供一些示例。

XPath语法

XPath表达式由一个或多个路径组成,每个路径都由零个或多个步骤组成,步骤之间用斜杠(/)分隔。每个步骤可以包含以下几个部分:

  • 轴(axis)
  • 节点测试(node test)
  • 谓语(predicate)

下面是一个XPath表达式的例子:

xpathCopy Code
/bookstore/book[author='Neal Stephenson']

这个表达式表示选取所有属于bookstore直接子元素的book元素,其中 <author> 子元素的值等于 "Neal Stephenson"。

XPath轴

XPath轴定义了节点的相对位置,常见的有以下几种:

  • ancestor:选择当前节点的所有祖先节点。
  • descendant:选择当前节点的所有后代节点。
  • parent:选择当前节点的父节点。
  • child:选择当前节点的所有子节点。
  • following-sibling:选择当前节点之后的所有兄弟节点。
  • preceding-sibling:选择当前节点之前的所有兄弟节点。
  • following:选择当前节点之后的所有节点。
  • preceding:选择当前节点之前的所有节点。

下面是一个XPath表达式的例子:

xpathCopy Code
//book/ancestor::*

这个表达式表示选取所有属于book的祖先节点。

XPath节点测试

XPath节点测试用于匹配特定类型的节点。常见的节点测试有以下几种:

  • node():匹配任意类型的节点。
  • text():匹配文本节点。
  • comment():匹配注释节点。
  • processing-instruction():匹配处理指令节点。
  • *:匹配所有元素节点。
  • @*:匹配所有属性节点。
  • name:匹配指定名称的元素节点。
  • @name:匹配指定名称的属性节点。

下面是一个XPath表达式的例子:

xpathCopy Code
//bookstore/book/title

这个表达式表示选取所有属于bookstore直接子元素的book元素的title子元素。

XPath谓语

XPath谓语用于过滤节点。谓语通常紧跟在节点测试后面,由方括号([])括起来。谓语可以包含一个或多个比较表达式。

下面是一个XPath表达式的例子:

xpathCopy Code
//bookstore/book[price>35.00]

这个表达式表示选取所有属于bookstore直接子元素的book元素,其中 <price> 子元素的值大于 35.00。

XPath常用函数

XPath提供了许多内置函数,常见的有以下几类:

  • 字符串函数:concat、normalize-space、starts-with、contains、substring等。
  • 数值函数:sum、floor、ceiling、round等。
  • 日期函数:current-date、current-time、current-dateTime等。

下面是一个XPath表达式的例子:

xpathCopy Code
//bookstore/book[position()<=3]

这个表达式表示选取所有属于bookstore直接子元素的前三个book元素。

示例

下面是一个简单的XML文档示例:

xmlCopy Code
<bookstore> <book category="科幻"> <title>零号程序</title> <author>William Gibson</author> <price>29.99</price> </book> <book category="推理"> <title>福尔摩斯探案全集</title> <author>Arthur Conan Doyle</author> <price>20.98</price> </book> <book category="文学"> <title>傲慢与偏见</title> <author>Jane Austen</author> <price>35.00</price> </book> </bookstore>

根据上述XPath语法和常用函数,可以使用以下XPath表达式来选择相应的节点:

xpathCopy Code
//bookstore/book[price>30]/title

这个表达式表示选取价格大于 30 的所有 book 元素的 title 子元素。输出如下:

Copy Code
<title>傲慢与偏见</title>
xpathCopy Code
//bookstore/book[last()]/author

这个表达式表示选取 bookstore 直接子元素的最后一个 book 元素的 author 子元素。输出如下:

Copy Code
<author>Jane Austen</author>

以上就是XPath教程学习笔记的内容,希望对大家有所帮助!