我是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