如何通过curl命令从xml文件中获取特定标记?

时间:2016-02-04 12:10:03

标签: xml curl

我有一个名为startup-cfg.xml的文件,其中包含

<futurePbRst>
  <fsPbProviderStpStatus>enabled</fsPbProviderStpStatus>
</futurePbRst>
<fsPbRstCVlanBridgeTable>
  <fsPbRstCVlanBridgeEntry>
    <fsPbRstPort>1</fsPbRstPort>
  </fsPbRstCVlanBridgeEntry>
</fsPbRstCVlanBridgeTable>
<fsPbRstCVlanPortInfoTable>
  <fsPbRstCVlanPortInfoEntry>
    <fsPbRstPort>1</fsPbRstPort>
    <fsPbRstCepSvid>1</fsPbRstCepSvid>
  </fsPbRstCVlanPortInfoEntry>
</fsPbRstCVlanPortInfoTable>

<interface>
  <name>eth0</name>
</interface>
<interface>
  <name>lo</name>
</interface>
<interface>
  <name>pan0</name>
</interface>
<interface>
  <name>sim0</name>
</interface>
<interface>
  <name>sim1</name>
</interface>

我想触发一个curl命令从这个xml文件中获取一个特定的标记值。我可以这样做吗?

运行命令curl http://127.0.0.1:50000/netconf/startup-cfg.xml会将整个文件内容作为输出。

2 个答案:

答案 0 :(得分:0)

curl不解析XML。尝试将curl的输出汇总到xmllint

curl http://127.0.0.1:50000/netconf/startup-cfg.xml \
| xmllint --xpath '//futurePbRst/fsPbProviderStpStatus/text()' -

答案 1 :(得分:0)

你可以试试这个:

var=$(curl http://127.0.0.1:50000/netconf/startup-cfg.xml)
variable=$(grep -oPm1 "(?<=<particular_tag>)[^<]+" <<< "$var")
echo $variable