如何从命令行解析 XML 文件(对于 GeekTool)?

如何从命令行解析 XML 文件(对于 GeekTool)?

我想找到一个可以提取文件的终端命令 http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=SOMEUSERNAME&count=1并对其进行解析以查找用户的 Twitter 状态。状态位于树上的“状态 -> 状态 -> 文本”位置内。

我研究过 libxml 和 xmllint。我认为 xmllint 是正确的,但我不确定。使用 xmllint,我知道我可以执行xmllint --shell file.xml然后cat //statuses/status/text。但是,我更希望能够执行类似这样的命令卷曲|XMLLINT|独立能源管理委员会这将一次性下载文件、解析文件并返回状态。

答案1

Perl 的 XML::Twig 附带...

xml_grep --nowrap --text_only /statuses/status/text

在 XML::XPath 中您可以执行以下操作:

perl -MXML::XPath -E 'my $xp = XML::XPath->new(ioref => \*STDIN); say $xp->getNodeText("/statuses/status/text");'

或者

perl -MXML::XPath -E 'my $xp = XML::XPath->new(ioref => \*STDIN); for my $node ($xp->find("/statuses/status/text")->get_nodelist) { say $node->string_value; }'

(当然,网络::Twitter也。)

相关内容