用于从XML文件

时间:2016-04-29 19:02:29

标签: xml shell nodename

我有一个像下面这样的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脚本

检索env,console,vhosts,cluster,nodes

BTW我能够使用xmllint读取节点属性,它工作正常,目前将节点硬编码到它。

1 个答案:

答案 0 :(得分:1)

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