如何使用XPath的字符串操作函数,例如substring()和concat()?

XPath中常用字符串操作函数为substring()和concat(),前者按起始位置与长度提取子串(索引从1开始),后者连接多个字符串,二者可嵌套使用实现复杂文本处理。

在XPath中,字符串操作函数可以帮助你提取、组合或处理文本内容。常用的函数包括 substring()concat(),它们在处理节点文本时非常实用。

使用 substring() 提取部分字符串

substring() 函数用于从一个字符串中提取指定位置的子串。它的基本语法是:

substring(字符串, 起始位置, 长度)

注意:XPath 的索引从 1 开始,不是 0。

  • 提取从第5个字符开始的4个字符:
    substring('HelloWorld', 5, 4) → 返回 "oWor"
  • 从第7个字符提取到末尾:
    substring('HelloWorld', 7) → 返回 "orld"
  • 也可以结合节点使用,例如获取某个元素文本的前3个字符:
    substring(//title, 1, 3)

使用 concat() 拼接多个字符串

concat() 函数可以将两个或多个字符串连接成一个。语法为:

concat(字符串1, 字符串2, ...)
  • 拼接两个固定字符串:
    concat('Hello', ' ', 'World') → 返回 "Hello World"
  • 合并两个元素的文本内容:
    concat(//firstname, ' ', //lastname) → 如 firstname 是 "Zhang",lastname 是 "Wei",结果为 "Zhang Wei"
  • 即使只有两个参数,也必须显式调用 concat,不能用加号连接字符串

结合使用 substring() 和 concat()

你可以嵌套使用这些函数来实现更复杂的字符串处理。

  • 例如,提取名字首字母并加上固定后缀:
    concat(substring(//firstname, 1, 1), '. ', //lastname) → 得到 "Z. Wei"
  • 截取路径中的文件名部分(假设路径为文本):
    substring-after('docs/report.pdf', 'docs/') 虽然不是 concat 或 substring,但类似函数可配合使用
基本上就这些常见用法。掌握 substring 和 concat 能让你在 XPath 表达式中灵活处理文本,尤其在数据提取和转换场景中很实用。