我使用以下脚本:
#!/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和各种不同的方法,但它不会返回任何内容。
我在这里做过傻事还是只是不加载远程网址?
感谢。
答案 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 ));