问题
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;
回答1:
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
回答2:
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/
来源:https://stackoverflow.com/questions/1524597/how-can-i-extract-some-xml-data-from-a-url-using-xmltwig