xml - 获取 XPATH 中属性的字符串值
问题描述
如何使用 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 版本 - 它可以帮助您更轻松地回答问题。
推荐阅读
- android - 使用 WeakReference Android 避免内存泄漏
- angular - 使用 ngx-translate 更改 Angular 5 中语言更改的页面 URL
- ios - Swift 4:具有可选值的对象的 JsonSerialization 失败
- javascript - json登录会话错误
- excel - Excel 格式/基于最后一个日期和相等的单元格值突出显示行
- vba - 根据标准找到另一个单元格编号后除以一个单元格编号
- ios - 尝试解开领域对象时出错
- json - json.hpp 在 Linux 上需要
- mysql - Mysql搜索,快递回复问题
- android-studio - 未定义的类和预期的类成员