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教程学习笔记的内容,希望对大家有所帮助!