XML :: Simple似乎不适用于URL。它是否正确?

时间:2011-09-19 12:09:46

标签: xml perl xml-simple

我使用以下脚本:

#!/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"));

它仍然有效。

如果我现在尝试使用网址,则脚本不会返回任何内容:

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

我尝试过使用和不使用http://,没有使用www和各种不同的方法,但它不会返回任何内容。

我在这里做过傻事还是只是不加载远程网址?

感谢。

2 个答案:

答案 0 :(得分:7)

XMLin()中的XML::Simple方法不支持从URL获取XML。在应用XMLin()之前,您需要单独获取XML文件或直接获取Perl标量变量。从XML::Simple文档中可以清楚地看到这一点。

答案 1 :(得分:5)

您可以按照以下方式修改程序,使用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 ));