您的位置:

XPath解析详解

一、XPath基本语法

1、XPath起步步骤

XPath是通过路径表达式来选取XML文档中的节点或节点集的,XPath有7种基本的路径表达式,包括节点选择、属性选择、位置选择、逻辑运算符、数值运算符、字符串函数、数值函数等。

// 代表选择根节点
/ 代表选择根节点下的直接子节点
descendant:: 选取从当前节点开始所有子孙节点
.. 选取当前节点的父节点
@ 选取某个属性的值
例子:
//bookstore/book[1]:选取第一个book元素节点

2、XPath运算符

XPath运算符主要包括节点比较运算、字符串比较运算、逻辑运算、数值运算等。

节点比较运算:
=, !=, <, <=, >, >=
字符串比较运算:
=, !=, <, <=, >, >=, contains()
逻辑运算:
and, or, not
数值运算:
+, -, *, div, mod
例子:
//bookstore/book[price>35.00]: 选取bookstore下的所有book元素节点中,price大于35.00的节点。

二、XPath选取节点

1、XPath选取节点类型

XPath中节点类型主要包括元素节点、属性节点、文本节点、命名空间节点等。

选取元素节点:
//+元素名:选取所有该元素名的节点
/ 子节点:选取该节点的直接子节点
选取属性节点:
//@属性名:选取该属性名的所有属性节点

2、XPath谓语的使用

谓语是用来限定查找范围的,一般包含在[]之中,可以使用一些运算符和函数对选取的节点作出进一步的限制。

例如://*[@lang='cn']:选取lang属性为cn的所有元素节点。

三、XPath选取文本节点

1、XPath选取文本节点的方法

XPath选取文本节点主要通过text()函数实现。

例如://bookstore/book[3]/title/text():选取bookstore下的第3个book元素节点的title子节点的文本值。

2、XPath选取多个文本节点的方法

XPath选取多个文本节点的方法主要是通过使用|运算符实现。

例如://bookstore/book/title | //bookstore/book/author:选取bookstore下的所有book元素节点的title和author子节点的文本值。

四、XPath选取节点属性

1、XPath选取属性节点的方法

XPath选取属性节点主要是通过使用@属性名的形式实现。

例如://bookstore/book[1]/@category:选取bookstore下的第1个book元素节点的category属性值。

2、XPath选取多个属性节点的方法

与选取多个文本节点类似,XPath选取多个属性节点的方法主要是通过使用|运算符实现。

例如://bookstore/book[@lang='en' or @lang='cn']/@category | //bookstore/book/title:选取lang属性为en或cn的所有book元素节点的category属性值和所有title子节点的文本值。

五、XPath函数

1、XPath函数的定义

XPath函数是用来处理查找结果和其他值得函数,通过函数名和参数列表调用,可以将结果进一步加工和处理。

常用的函数有:
count(), sum(), concat(), substring(), contains(), floor(), round()等。
例如:count(//bookstore/book):选取bookstore下的所有book元素节点的数量。

2、XPath函数与运算符的联合使用

XPath函数和运算符的联合使用可以实现更加强大的功能,例如查找某一类型的节点中特定的文本值等。

例如://bookstore/book[contains(title, 'Harry Potter')]/price:选取title中包含Harry Potter的所有book元素节点的price子节点的文本内容。

六、XPath轴

1、XPath轴的介绍

XPath轴是一组预定义的节点集合,包括了当前节点、父节点、子节点和兄弟节点等,在XPath中使用轴可以对节点进行更加灵活的定位。

常用的轴有:
self, parent, child, descendant, following-sibling, preceding-sibling等。

2、XPath轴的语法

XPath轴的语法是在选取节点时添加轴名称和分隔符“::”,例如:axis::nodetype。

例如:ancestor::book:选取当前节点的祖先节点中所有book元素节点。

七、XPath运用场景和注意事项

1、XPath的运用场景

XPath可以用于处理XML数据和HTML数据,便于对数据进行定位和提取,广泛应用于Web数据挖掘、自然语言处理等领域。

2、XPath的注意事项

在XPath使用过程中需要注意元素和属性的大小写区分问题,避免出现错误。

同时,XPath路径表达式不应该过于冗长,否则会降低执行效率,应该结合具体情况进行优化。

八、代码示例