使用XMLLINT在Bash中具有多个属性的解析XML
我是Bash中XML解析的新手,我想在下面解析XML以获取Ident,Host和用户名属性的值。
<config>
<connectionstring>
<ftpconfig ident="testftp" host="ftphost" username="456def" password="abc123" localdir="/local/dir/test" />
</connectionstring>
</config>
到目前为止,我可以使用XMLLINT获得单个属性的值。但是,这就是我想实现的目标。
第一。使用身份属性获取主机值。 - &gt;我使用这个实现了。
hostv=$(echo 'cat /config/connectionstring/ftpconfig[@ident="testftp"]/@host' | xmllint --shell myxml.xml | awk -F\" '/=/ { print $2; }')
第二。使用Ident和host属性获取用户名值 - &gt;这就是我被困的地方。我尝试了下面的不同方法。
userv=$(echo 'cat /config/connectionstring/ftpconfig[@ident="testftp"]/@host=\""$hostv"\"/@username' | xmllint --shell myxml.xml | awk -F\" '/=/ { print $2; }')
事先感谢您的帮助。
I am new in XML parsing in bash and I wanted to parse the xml below to get the values of ident, host and username attributes.
<config>
<connectionstring>
<ftpconfig ident="testftp" host="ftphost" username="456def" password="abc123" localdir="/local/dir/test" />
</connectionstring>
</config>
So far, I can get the value of single attribute using xmllint. But, this is what I wanted to achieve.
1st. Get the host value using ident attribute. --> I achieve it using this.
hostv=$(echo 'cat /config/connectionstring/ftpconfig[@ident="testftp"]/@host' | xmllint --shell myxml.xml | awk -F\" '/=/ { print $2; }')
2nd. Get the username value using ident and host attribute --> this is where I am stuck. I tried different approaches like below.
userv=$(echo 'cat /config/connectionstring/ftpconfig[@ident="testftp"]/@host=\""$hostv"\"/@username' | xmllint --shell myxml.xml | awk -F\" '/=/ { print $2; }')
Thanks in advance for your help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
那呢?
并仅获取
用户名
属性的值,您可以使用string()
:What about this?
And to get only the value of the
username
attribute you can usestring()
: