xml - 获取 XPATH 中属性的字符串值

标签 xml xpath attributes

如何使用 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/

相关文章:

python - 解析具有未定义实体的 XHTML5

html - 使用 xpath 抓取 ruby​​ nokogiri HTML 表格

java - 在克隆的 dom4j 对象上使用 Xpath 会产生不同的结果

c# - 在属性和方法之间共享角色属性的初始化

python - __getattribute__ 什么时候不参与属性查找?

javascript - jQuery .data 方法 - 根据存储数据动态添加或删除元素

javascript - Angular 5 - HttpClient XML Post - 解析期间 Http 失败

xml - 使用 XML 数据结构还是可以转换为 XML 的自定义数据结构更好?

c# - 使用字符串连接构建 XML 有什么不好?

xml - 是数字,在 XPath 或 XSL 中是字母/数字