从Linux上的curl命令结果中提取xml部分

时间:2014-07-03 14:34:22

标签: xml linux perl curl

我发出以下命令:

curl http://localhost:8082/some-url

返回与此类似的xml:

<?xml version="1.0" encoding="UTF-8"?><user><dateCreated>1</dateCreated><dateLastModified>1</dateLastModified><id>1</id><disabled>false</disabled><firstName></firstName><lastName></lastName></user>

从响应中提取xml元素的最简单方法是什么,例如元素&#34;真&#34;?

注意,我想要完整的开始标记,内容和结束标记(内容也可能是空的。

由于

4 个答案:

答案 0 :(得分:4)

使用XML::Twig附带的xml_grep,您可以curl http://localhost:8082/some-url | xml_grep --nowrap disabled(我假设您想要disabled元素的内容,我不会看到数据中的任何true元素

答案 1 :(得分:2)

xmllint也可以作为你的选择吗?

$ curl -s http://localhost:8082/some-url | xmllint --xpath '//user/disabled' -

答案 2 :(得分:0)

或与xshhttp://xsh.sourceforge.net/)相同:

$ curl -s http://localhost:8082/some-url | xsh -q -I - -C 'ls //user/disabled/text()'

答案 3 :(得分:0)

经典的解决方案是将xmlstarlet用于example作为RSS源:

URL="https://feeds.feedburner.com/TEDenEspanol"
curl -s $URL | xmlstarlet sel -t -v 'rss/channel/title'