XPath 运算符


XPath 运算符

XPath 是一种查询 XML 文档内数据的语言,它提供了一系列的运算符用于查询和比较 XML 元素和属性节点的值。本文将介绍 XPath 中的运算符。

定位符

XPath 中使用 / 符号表示从根节点开始定位节点。例如:

/catalog/cd/title

表示选择所有 catalog 元素下的 cd 子元素的 title 子元素。

相对于根节点,XPath 也可以使用 . 表示当前节点和 .. 表示父节点。

./catalog/cd/title
../catalog

谓语

XPath 谓语用于筛选符合条件的节点。谓语必须紧跟在元素或者属性选择器后面,使用方括号 [] 框住条件语句。例如:

/catalog/cd[price>10.00]/title

表示选择所有 catalog 元素下的 cd 子元素,条件是 price 子元素的值大于 10.00,并返回它们的 title 子元素。

可以用多个谓语来进一步限制筛选条件:

/catalog/cd[price>10.00][artist='Bob Dylan']/title

返回 catalog 元素下的 cd 子元素,满足 price>10.00artist='Bob Dylan' 两个条件,然后返回它们的 title 子元素。

逻辑运算符

XPath 支持三种逻辑运算符,它们分别是:

  • and:逻辑与
  • or:逻辑或
  • not:逻辑非

逻辑运算符通常与谓语一起使用。例如:

//book[price>35.00 and contains(title,'Python')]

选择文档中所有 book 元素,满足 price>35.00title 子元素包含字符串 Python 的条件语句。

算术运算符

XPath 支持六种算术运算符,分别是:

  • +:加法
  • -:减法
  • *:乘法
  • /:除法
  • %:求余数
  • div:除法

算术运算符可以用于数值类型节点的运算。例如:

//book[price div 2 >= 20.00]

选择文档中所有 book 元素,其中 price 子元素的值除以 2 的商大于等于 20.00

字符运算符

XPath 支持两种字符串运算符,分别是:

  • concat:串接运算符
  • starts-with:前缀运算符
  • ends-with:后缀运算符
  • contains:子串运算符

字符运算符用于选择 XML 文档中符合指定条件的节点。

//movie[genre='Action' and starts-with(title,'The') and contains(actor/@name,'Tom')]

选择文档中所有 movie 元素,条件是 genre 子元素的值等于 Actiontitle 子元素的值以 The 开头,且任意一个含有 name 属性的子元素的 name 属性值包含字符串 Tom