一、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路径表达式不应该过于冗长,否则会降低执行效率,应该结合具体情况进行优化。