XML :: Simple не работает с URL. Это правильно? - PullRequest
1 голос
/ 19 сентября 2011

Я использую следующий скрипт:

#!/usr/local/bin/perl -wT

use strict;
use warnings;

print "Content-type: text/html\n\n";
print "xml reader";

# use module
use XML::Simple;
use Data::Dumper;

#print Dumper (XML::Simple->new()->XMLin());

, и он будет читать в моем XML-файле с именем xml.xml

Если я сейчас переместу xml-файл из моего cgi-bin, измените его имя и назовите его, используя:

#print Dumper (XML::Simple->new()->XMLin("../resource.xml"));

Это все еще работает.

Если я сейчас попытаюсь использовать URL, вместо этого скрипт ничего не даст:

print Dumper (XML::Simple->new()->XMLin("http://digitalessence.net/resource.xml"));

Я пробовал с и без http://, без www и всевозможных способов сделать это, но он ничего не возвращает.

Я что-то сделал здесь глупо или просто не загрузит удаленный URL?

Спасибо.

Ответы [ 2 ]

7 голосов
/ 19 сентября 2011

Метод XMLin() в XML::Simple не поддерживает извлечение XML из URL. Вам необходимо извлечь XML отдельно, либо в файл, либо непосредственно в скалярную переменную Perl, перед применением XMLin(). Это ясно из документации XML::Simple.

5 голосов
/ 19 сентября 2011

Вы можете изменить свою программу следующим образом, используя LWP для извлечения удаленного ресурса:

[...]
# use module
use XML::Simple;
use LWP;
use Data::Dumper;

my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new( GET => "http://digitalessence.net/resource.xml" );
my $res = $ua->request( $req );

print Dumper (XML::Simple->new()->XMLin( $res->content ));
...