2009-10-06 4 views
4

Я хочу получить конкретную строку, например 123 в <, полученную> 123 </полученную от часть XML, которая будет извлекаться из URL-адреса.Как извлечь некоторые XML-данные из URL с помощью XML :: Twig?

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

Попытка благословить в ссылку на /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

В качестве побочного примечания см. Этот ответ, почему использование 'new XML :: Twig' является плохим и почему' 'XML :: Twig-> new' является предпочтительным: http://stackoverflow.com/questions/429657/what-is-the-difference-between-new-someclass-and-someclass-new-in-perl/429798 # 429798 – friedo

+0

Благодарим за предложение. Я переписал его с помощью моего $ twig = XML :: Twig-> new (Twig_Roots => {...}}); хорошо работает :) - – conandor

ответ

5

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 
+0

Спасибо, mirod. Он хорошо работает с xparse. FYI, $ twig-> print предназначен только для отладки. На самом деле мне просто нужно значение $ author. – conandor

3

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

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

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

/I3az/

+0

это не ошибка в nparse, это ошибка в том, как она называется; -) – mirod

+0

Ах да ... Я вижу это прямо в вашем POD сейчас! Повторно рассмотрел мой пример и теперь он блестяще работает: my $ twig = XML :: Twig-> nparse (twig_handlers => { title => sub {print $ _-> text}, }, 'http: // w3c. орг '); – draegtun

+0

На самом деле nparse и xparse были неудачными экспериментами, которые в конечном итоге приводят меня к простому переписыванию синтаксического анализа, чтобы заботиться обо всем для вас (новый _and_, определяющий способ использования синтаксического анализа). – mirod

 Смежные вопросы

  • Нет связанных вопросов^_^