如何在不下载文件的情况下从 http URL 解析 xml 文件并打印所需的字符串?

如何在不下载文件的情况下从 http URL 解析 xml 文件并打印所需的字符串?

嗨,我不确定这是否可能,我已经在谷歌上检查了很多选项。

例如,如果我有一个包含 xml 内容的 http URL:http://server.com/lastBuild/api/xml

内容如下所示,<building>false</building>可以出现在多行中

<action/> <building>false</building> <displayName>mercury_system</displayName> <duration>1606128</duration>

我可以在不将内容下载到本地的情况下解析相同的 http url 并打印最后一次出现的“false”字符串<building>false</building>吗?

答案1

您不需要先将其“下载”到文件中。您可以将其作为管道的一部分临时下载

使用xmlstarlet 解析 xml

curl 'http://example.com/lastBuild/api/xml' 
| xmlstarlet sel -t -c "//building[last()]/text()"

答案2

sed 替代方案:

$ curl -s 'https://raw.githubusercontent.com/gevasiliou/PythonTests/master/test.xml' |tac |sed -n '/<building>/{s/<.[^>]*>//g;p;q}'
      success

相关内容