XPath 运算符学习笔记

1. 算数运算符

XPath 支持的算数运算符有加、减、乘、除和取模。它们分别用 +-*/% 表示。

例如,假设有以下 XML 文档:

xmlCopy Code
<bookstore> <book> <title>Harry Potter</title> <price>29.99</price> </book> <book> <title>The Hobbit</title> <price>24.99</price> </book> </bookstore>

使用 XPath 表达式 /bookstore/book/price * 2 可以得到所有书籍价格的两倍:

xpathCopy Code
59.98 49.98

2. 关系运算符

XPath 支持的关系运算符有等于、不等于、大于、小于、大于等于和小于等于。它们分别用 =!=><>=<= 表示。

例如,在上面的例子中,可以使用 XPath 表达式 //book[price > 25] 获取价格大于 25 的书籍:

xpathCopy Code
<book> <title>Harry Potter</title> <price>29.99</price> </book>

3. 逻辑运算符

XPath 支持的逻辑运算符有与、或和非。它们分别用 andornot 表示。

例如,在上面的例子中,可以使用 XPath 表达式 /bookstore/book[price > 25 and price < 30] 获取价格在 25 和 30 之间的书籍:

xpathCopy Code
<book> <title>Harry Potter</title> <price>29.99</price> </book>

4. 字符串运算符

XPath 支持的字符串运算符有连接运算符。它用 concat() 表示。

例如,假设有以下 XML 文档:

xmlCopy Code
<bookstore> <book> <title>Harry Potter</title> <author>J.K. Rowling</author> </book> <book> <title>The Hobbit</title> <author>J.R.R. Tolkien</author> </book> </bookstore>

使用 XPath 表达式 concat(/bookstore/book[1]/title, " by ", /bookstore/book[1]/author) 可以获取第一本书的标题和作者名称并进行连接:

xpathCopy Code
Harry Potter by J.K. Rowling

5. 谓语

XPath 中的谓语是用来过滤节点的。它们用在路径表达式中,放在方括号中。谓语是由一个条件表达式构成的。

例如,在上面的例子中,可以使用 XPath 表达式 /bookstore/book[2] 获取第二本书:

xpathCopy Code
<book> <title>The Hobbit</title> <author>J.R.R. Tolkien</author> </book>

6. 函数

XPath 中提供了一些内置函数,用于操作节点或字符串。

例如,使用 string() 函数可以将节点转换为字符串:

xpathCopy Code
string(/bookstore/book[1]/title)

使用 last() 函数可以获取最后一个节点:

xpathCopy Code
/bookstore/book[last()]

7. 其他运算符

除了上述运算符之外,XPath 还支持一些其他的运算符,比如 Union 运算符、Intersection 运算符和 Except 运算符,它们分别用 |intersectexcept 表示。这里不再赘述。

结论

XPath 是一种用于 XML 文档的查询语言,它支持多种运算符和函数。熟练掌握 XPath 运算符的使用,可以帮助我们更加方便地从 XML 文档中获取所需的数据。