使用xmlstarlet和特定属性解析xml

时间:2014-03-04 08:24:08

标签: xml xpath xmlstarlet

我试图使用xmlstarlet并遇到困难。我有以下XML提要。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RESPONSE VERSION="L100" REQUEST="show volume-statistics">
  <OBJECT basetype="volume-statistics" name="volume-statistics" oid="1" format="rows">
    <PROPERTY name="volume-name" display-name="Name">VOL0</PROPERTY>
    <PROPERTY name="volume-IOPS" display-name="IOPS">100</PROPERTY>
  </OBJECT>
</RESPONSE>

我需要选择名称等于VOL0的IOPS值,并仅打印volume-IOPS的值。

我尝试过以下命令:

xmlstarlet sel -t -m "RESPONSE/OBJECT/PROPERTY/[@display-name='VOL0']" -v "RESPONSE/OBJECT/PROPERTY[@volume0IOPS] test.xml

示例输出

100

1 个答案:

答案 0 :(得分:1)

您可以使用单个XPath表达式执行此操作,该表达式检索包含“VOL0”名称属性的<OBJECT/>元素,然后选择相应的IOPS属性。

xmlstarlet sel -t -v '
  /RESPONSE/OBJECT[PROPERTY[@name="volume-name"]="VOL0"]
  /PROPERTY[@name="volume-IOPS"]' test.xml