String-Length()返回字符串中Unicode字符个数;参数为空或未提供时返回0,节点集取第一个节点的字符串值;空格和换行符计入长度,需精确判断时应先用normalize-space()清理。

XPath 中用 string-length() 函数获取字符串长度,它返回字符串中 Unicode 字符的个数(不是字节数)。
基本用法:直接计算字符串长度
函数接受一个字符串参数,返回整数。如果参数为空或未提供,返回 0;如果参数是节点集,只取第一个节点的字符串值(即 string(node-set) 的结果)。
-
string-length('hello')→ 返回 5 -
string-length('你好')→ 返回 2(每个汉字算 1 个字符) -
string-length('')→ 返回 0 -
string-length()(无参数)→ 返回 0
结合节点使用:获取元素文本内容的长度
常用于判断某个元素是否为空、或筛选文本较长/较短的节点。
-
string-length(//title)→ 返回第一个<title></title>元素文本内容的字符数 -
//div[string-length(text()) > 10]→ 选中文本子节点长度超过 10 的<div> <li> <code>//input[string-length(@placeholder) > 0]→ 找出设置了非空 placeholder 的 input -
string-length(normalize-space(//p))→ 去掉首尾空格、合并中间多个空格为一个后计算长度 -
//p[string-length(normalize-space()) = 0]→ 找真正“空内容”的段落(忽略纯空白)
注意空格和换行符也算字符
text() 可能包含空白(如缩进、换行),string-length() 会把它们计入长度。需要精确判断“有效内容”时,建议先用 normalize-space() 清理:
在不同 XPath 版本中的兼容性
string-length() 是 XPath 1.0 就支持的核心函数,所有主流解析器(如 lxml、Saxon、浏览器内置 XPath)都支持。XPath 2.0/3.0 中行为一致,但新增了更灵活的字符串函数(如 string-length((), 'UTF-8') 这类字节长度计算需用其他方式,XPath 本身不直接支持)。
基本上就这些 —— 简单但容易忽略空白影响,用前记得看清楚目标文本的实际构成。