gpt4 book ai didi

XPath:将函数应用于所有匹配项?

转载 作者:行者123 更新时间:2023-12-03 17:29:51 25 4
gpt4 key购买 nike

所以我有一个 XPath 表达式来获取我感兴趣的属性值:

//ElementName/@AttributeName

我只想将该属性的值作为字符串。我可以这样做:

string(//ElementName/@AttributeName)

但这只将函数应用于第一个节点。我想获得将 string() 应用于 所有 匹配项的结果,这些匹配项连接在一起(我在命令行中使用 xmllint ,它只是打印出表达式的结果,因此它不需要是结构化类型的结果)。我认为这可能有效:

//ElementName/string(./@AttributeName)

但这给了我一个语法错误,我尝试过的变体也是如此。所以目前,我正在这样做:

count=$(xmllint --xpath 'count(//ElementName/@AttributeName)' file.xml)
for (( i=1; i<=count; ++i )); do
echo "$(xmllint --xpath "string((//ElementName/@AttributeName)[$i])" file.xml)"
done

这看起来……至少是低效的。有没有更好的办法?

最佳答案

使用 XPath 2.0(或 XQuery 1.0)及更高版本,您可以使用 //ElementName/@AttributeName/string() 的方法来获取所有字符串值的序列或 string- join(//ElementName/@AttributeName, '') 将它们连接在一起。但是在 XPath 1.0 中,您总是需要像以前那样转到宿主语言。

关于XPath:将函数应用于所有匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38400915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com