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

Hed*_*ips 1 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());
Run Code Online (Sandbox Code Playgroud)

它将在我的xml文件中读取,名为xml.xml

如果我现在将xml文件移出我的cgi-bin,请更改其名称并使用以下命令引用它:

#print Dumper (XML::Simple->new()->XMLin("../resource.xml"));
Run Code Online (Sandbox Code Playgroud)

它仍然有效.

如果我现在尝试使用url而不是脚本不返回任何内容:

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

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

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

谢谢.

Kus*_*nda 7

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


Mar*_*lis 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 ));
Run Code Online (Sandbox Code Playgroud)