【发布时间】:2016-07-15 16:23:26
【问题描述】:
所以我有一个 XPath 表达式来获取我感兴趣的属性值:
//ElementName/@AttributeName
我只想要那个属性的值作为一个字符串。我可以这样做:
string(//ElementName/@AttributeName)
但这仅将函数应用于第一个节点。我想得到将 string() 应用于 all 的匹配结果,并连接在一起(我在命令行中使用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