1

次のスクリプトを使用しています。

#!/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 をロードしないのでしょうか?

ありがとう。

4

2 に答える 2

7

XMLin()メソッドはXML::Simple、URL からの XML のフェッチをサポートしていません。を適用する前に、XML を個別に、ファイルに取得するか、Perl スカラー変数に直接取得する必要がありますXMLin()。これはXML::Simpleドキュメントから明らかです。

于 2011-09-19T12:17:22.930 に答える
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 ));
于 2011-09-19T12:23:59.810 に答える