首页 > 解决方案 > 没有子节点的 XPath 的 string-length()

问题描述

我需要一个单行 XPath 1.0 表达式来计算节点的长度,但不包括任何子节点中的文本(如果它们存在)。

例如,string-length() 的

<node>This is text</node>

是 12 (ok),但是 string-length() 的

<node>This is<any>any text</any> text</node>
<node>This <any>any text</any>is text</node>

超过 12 (不好)。

我不能使用,因为如果里面有任何子节点string-length(//node/text()),它会占用里面的第一块文本。nodenode

标签: xmlxpathxpath-1.0

解决方案


XPath 1.0

单独的 XPath 1.0 不能仅提供元素的文本节点子节点的字符数。您还必须使用托管 XPath 库的语言的工具。

XPath 2.0 及更高版本

这个 XPath(首先由 @MartinHonnen在评论中发布),

sum(/node/text()/string-length())

将根据要求提供 的所有文本节点子节点的字符数/node

也可以看看


推荐阅读