Wie kann ich eine XML-Datei von der Befehlszeile aus analysieren (für GeekTool)?

Wie kann ich eine XML-Datei von der Befehlszeile aus analysieren (für GeekTool)?

Ich möchte einen Terminalbefehl finden, der die Datei abrufen kann unter http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=SOMEUSERNAME&count=1und analysieren Sie es, um den Twitter-Status eines Benutzers zu finden. Der Status befindet sich im Baum an der Position „Status -> Status -> Text“.

Ich habe mir libxml und xmllint angesehen. Ich glaube, mit xmllint bin ich auf dem richtigen Weg, aber ich bin mir nicht sicher. Mit xmllint weiß ich, dass ich xmllint --shell file.xmlund dann ausführen könnte cat //statuses/status/text. Aber ich würde es vorziehen, eine Art Befehl ausführen zu können wieCURL|XMLLINT|SEDDadurch wird die Datei heruntergeladen, analysiert und der Status auf einen Schlag zurückgegeben.

Antwort1

Perls XML::Twig wird geliefert mit...

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

In XML::XPath können Sie Folgendes tun:

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

oder

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

(Natürlich gibt esNetz::Twitterzu.)

verwandte Informationen