How can I extract some XML data from a URL using X

2019-06-26 08:32发布

I want to get a specific string, for example 123 in <received>123</received> from some XML that will be retrieved from a URL.

I have write a code but stuck with an error message:

Attempt to bless into a reference at /usr/share/perl5/XML/Twig.pm line 392.

How can I solve it?

The code:

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条回答
霸刀☆藐视天下
2楼-- · 2019-06-26 08:36

nparse takes care of the new for you (hence the 'n'), what you want in this case is probably xparse, or just let the module figure it out and do this:

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
查看更多
萌系小妹纸
3楼-- · 2019-06-26 08:43

Appears to be a bug in nparse method because if you replace that line with:

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

Then you should find it works fine (or it does when I try it).

/I3az/

查看更多
登录 后发表回答