gpt4 book ai didi

xml - 使用XPath string()从bash脚本中的XML获取属性值

转载 作者:行者123 更新时间:2023-12-03 17:21:47 32 4
gpt4 key购买 nike

前言:
这不是重复的,因为所有其他主题都无法回答我的特定问题。
我在Xubuntu 18.04上
使用libxml-xpath-perl 1.42(如果重要)

问题:
我有一个XML,可以这样说:

<root>
<level1>
<somechild foo="bar" />
</level1>
</root


我想从 bar的属性 somechild获取值 foo
但是,当我查询

FOO=$(xpath -e '/root/level1/somechild/@foo' $XMLFILE)"


在我的bash脚本中,它返回 foo="bar"而不是 bar

我已经研究了这个问题,发现我必须对string()做一些事情,但是我只是无法弄清楚什么是正确的语法。

我已经在很多地方尝试过string()函数,但是到目前为止,我最接近成功的地方是

FOO="$(xpath -e 'string(/root/level1/somechild/@foo)' $XMLFILE)"


在这种情况下, echo $FOO给了我


查询未返回节点集。值:巴


仍然不是我想要的,但至少没有错误,并且该值被识别为 bar

如何正确使用?

最佳答案

使用有效的XML:

xpath -e 'string(//root/level1/somechild/@foo)' file.xml 2>/dev/null 


要么

xmlstarlet select --text --template --copy-of 'string(//root/level1/somechild/@foo)' file.xml


要么

xmlstarlet select --text --template --match '//root/level1/somechild' --value-of '@foo' file.xml


输出:

酒吧

关于xml - 使用XPath string()从bash脚本中的XML获取属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53695505/

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