使用xmllint分析bash中具有多个属性的XML



我是bash中XML解析的新手,我想解析下面的XML以获得ident、host和username属性的值。

<config>
<connectionstring>
<ftpconfig ident="testftp" host="ftphost" username="456def" password="abc123" localdir="/local/dir/test" />
</connectionstring>
</config>

到目前为止,我可以使用xmllint获得单个属性的值。但是,这正是我想要实现的。

第一。使用ident属性获取主机值-->我用这个来实现它。

hostv=$(echo 'cat /config/connectionstring/ftpconfig[@ident="testftp"]/@host' | xmllint --shell myxml.xml | awk -F" '/=/ { print $2; }')

第二。使用ident和host属性获取用户名值-->这就是我陷入困境的地方。我尝试了以下不同的方法。

userv=$(echo 'cat /config/connectionstring/ftpconfig[@ident="testftp"]/@host=""$hostv""/@username' | xmllint --shell myxml.xml | awk -F" '/=/ { print $2; }')

提前感谢您的帮助。

这个怎么样?

xmllint --xpath '/config/connectionstring/ftpconfig[@ident="testftp" and @host="ftphost"]/@username' myxml.xml
username="456def"

要只获取username属性的值,可以使用string():

xmllint --xpath 'string(/config/connectionstring/ftpconfig[@ident="testftp" and @host="ftphost"]/@username)' file.xml
456def

相关内容

  • 没有找到相关文章

最新更新