在前面的文章中,我们了解了 XPath 的基本概念和语法。现在,我们将深入探讨 XPath 的高级选择器和路径表达式,以便更高效地查询 XML 数据。
高级选择器
位置选择器
XPath 提供了一些位置选择器,可以帮助我们选择特定位置的节点:
-
position()
:返回符合当前节点在节点的所有位置,是一个数组,可以对数组进行操作。 -
last()
:返回节点集中的最后一个节点。 -
选择最后一个scirpt标签内容:
xpath
//script[last()]
过滤选择器
使用方括号 []
可以对节点进行过滤。例如,百度贴吧回帖数大于600的:
xpath
//em[@data-num>600]
复杂路径表达式
XPath 允许我们使用复杂的路径表达式来精确定位节点。以下是一些示例:
xml
<bookstore>
<category name="前端开发">
<book id="101">
<title>JavaScript高级程序设计</title>
<price>89.00</price>
<stock>15</stock>
</book>
<book id="102">
<title>CSS权威指南</title>
<price>79.00</price>
<stock>8</stock>
</book>
</category>
<category name="后端开发">
<book id="201">
<title>Node.js实战</title>
<price>69.00</price>
<stock>12</stock>
</book>
<book id="202">
<title>Python核心编程</title>
<price>99.00</price>
<stock>5</stock>
<discount>0.8</discount>
</book>
<book id="203">
<title>Java并发编程实战</title>
<price>109.00</price>
<stock>0</stock>
</book>
</category>
</bookstore>
- 选择所有书籍的标题:
xpath
//book/title
- 选择所有价格大于 20 的书籍的标题:
xpath
//book[price > 70]/title
- 选择所有书籍中作者为 "王五" 的书籍:
xpath
//book[author='王五']
使用 XPath 函数提升查询能力:从基础到复杂
XPath 提供了多种内置函数,可以帮助我们进行更复杂的查询。
常用函数
字符串函数
contains(string, substring)
:检查字符串是否包含子字符串。starts-with(string, substring)
:检查字符串是否以特定子字符串开头。substring(string, start, length)
:返回字符串的子串。
例如,选择所有标题中包含 "Java" 的书籍:
xpath
//book[contains(title, 'Java')]
数学函数
sum(node-set)
:返回节点集的总和。count(node-set)
:返回节点集中的节点数量。
选择所有书籍的总价格:
xpath
sum(//book/price)
XPath 条件表达式与逻辑运算符的应用
XPath 支持条件表达式和逻辑运算符,使得查询更加灵活。
条件表达式
可以使用条件表达式来筛选节点。例如,选择价格在 10 到 30 之间的书籍:
xpath
//book[price >= 70 and price <= 100]
逻辑运算符
XPath 支持 and
、or
和 not()
运算符。例如,选择所有作者为 "John" 或 "Jane" 的书籍:
xpath
//book[price=89 or price=109]
小结
如果你喜欢本教程,记得点赞+收藏!关注我获取更多JavaScript开发干货。