如何使用 XPath 获取属性节点的值? XML 文件示例:
<model:testFile name="$test1$">
<model:task exec="/" />
</model:testFile>
<model:testFile name="$test2$">
<model:task exec="/" />
</model:testFile>
我需要获取属性名称的字符串值。
如果我使用:string(//model:testFile/@name)
,我会得到$test1$
作为输出。
这就是我希望上面示例的输出的样子:
$test1$
$test2$
最佳答案
string()
函数返回单个字符串。在 XPath 1.0 中,如果将其应用于 >1 个节点的序列,它会给出第一个节点的字符串值。在 2.0+ 中它会给你一个错误。
在 XPath 1.0 中,不存在“字符串序列”这样的数据类型,因此无论您如何努力,都无法从表达式中返回字符串序列。您可以做的是返回节点序列,并让主机应用程序提取节点的字符串值。
在 XPath 2.0 中,您可以返回字符串序列:使用 //model:testFile/@name/string()
。或者,您可以使用 string-join(//model:testFile/@name, '
')
将字符串连接成带有换行符的单个字符串。 (我在这里对换行符使用了 XML 转义;如果 XPath 托管在将换行符表示为 \n
的语言中,则使用它。)
请始终说明您正在使用哪个 XPath 版本 - 这样可以更轻松地帮助回答问题。
关于xml - 获取 XPATH 中属性的字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59104319/