Как я могу извлечь некоторые данные XML из URL, используя XML::Twig?

Я хочу получить определенную строку, например 123 в 123 из некоторого XML, который будет получен из URL.

Я написал код, но застрял с сообщением об ошибке:

Попытайтесь благословить ссылку в /usr/share/perl5/XML/Twig.pm строка 392.

Как я могу решить это?

Код:

use XML::Twig;
use LWP::Simple;

my $url = 'http://192.168.1.205:13000/status.xml';
my $twig = new XML::Twig(TwigRoots => {
'smsc/received' => sub {$author = $_[1]->text;  }});
$twig->nparse( $url );
$twig->print;

2 ответа

Решение

nparse заботится о new для вас (отсюда и "n"), что вы хотите в этом случае, вероятно, xparseили просто дайте модулю понять это и сделайте это:

my $url= 'http://192.168.1.205:13000/status.xml';
my $twig= XML::Twig->parse( twig_roots => 
                              { 'smsc/received' => sub { $author= $_[1]->text;}},
                             $url
                           );
$twig->print; # I am not sure why you print the twig instead of just $author

Кажется, что это ошибка в методе nparse, потому что если вы замените эту строку на:

$twig->parse( LWP::Simple::get($url) );

Тогда вы должны найти, что он работает нормально (или это происходит, когда я пытаюсь это сделать).

/ I3az /

Другие вопросы по тегам