shell脚本从XML文件中检索节点名称

问题描述:

我有一个XML文件,如下所示,我试图检索第一个子节点名称并将其存储在数组中,并将其用于读取属性。shell脚本从XML文件中检索节点名称

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="config.xsl"?> 
<cell name="servicesPrd"> 
    <env>Prod </env> 
    <console> 
     ... 
    </console> 
    <vhosts> 
     .... 
    </vhosts> 
    <clusters> 
     .... 
    </clusters> 
    <nodes> 
     .... 
    </nodes> 
</cell> 

我期待通过shell脚本

BTW,我能够读取节点检索ENV,控制台,虚拟主机,群集节点属性使用xmllint这是工作的罚款,目前硬编码的节点名吧。

xmlstarlet是用于查询XML文件一般有用:

$ xmlstarlet sel -t -m '/cell/*' -v 'name()' -n your.xml 
env 
console 
vhosts 
clusters 
nodes 

$ xmlstarlet el your.xml 
cell 
cell/env 
cell/console 
cell/vhosts 
cell/clusters 
cell/nodes 
+0

该诀窍:) – Mowgli