如何從命令列(對於 GeekTool)解析 XML 檔案?

如何從命令列(對於 GeekTool)解析 XML 檔案?

我想找到一個可以在以下位置提取文件的終端命令 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|SED它會下載文件,解析它,然後一下子返回狀態。

答案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; }'

(當然,還有網路::推特也。

相關內容