Xml Can';t调用方法";rs“U名称空间”uri“;在GetRss.pl第25行的未定义值上
我正在努力从在线新闻报纸的RSS提要中获取特殊术语。我正在使用带有LWP::UserAgent的XML::RSS::解析器进行URL下载。我无法让它工作,即使我实际使用了来自cpan的复制粘贴:$feed-%3Erss\u namespace\u uri。我总是会遇到同样的错误:“无法在GetRss.pl第25行的未定义值上调用方法“rss_namespace_uri”。我什么都试过了。。。我在LWP::Simple和XML::RSS::Parser中也遇到了同样的问题,我使用FileHandle进行了管理,但我知道我希望从多个站点获取提要,并保存在一个数组中。 这是我的代码:Xml Can';t调用方法";rs“U名称空间”uri“;在GetRss.pl第25行的未定义值上,xml,perl,rss,lwp-useragent,Xml,Perl,Rss,Lwp Useragent,我正在努力从在线新闻报纸的RSS提要中获取特殊术语。我正在使用带有LWP::UserAgent的XML::RSS::解析器进行URL下载。我无法让它工作,即使我实际使用了来自cpan的复制粘贴:$feed-%3Erss\u namespace\u uri。我总是会遇到同样的错误:“无法在GetRss.pl第25行的未定义值上调用方法“rss_namespace_uri”。我什么都试过了。。。我在LWP::Simple和XML::RSS::Parser中也遇到了同样的问题,我使用FileHandl
#!/usr/bin/perl -w
use strict;
use XML::RSS::Parser;
use URI;
use LWP::UserAgent;
use Data::Dumper;
my $ua = LWP::UserAgent->new;
$ua->agent('XML::RSS::Parser Test Script');
my @places=( 'http://www.timaoutloud.org/xml/index.rdf' );
my $p = new XML::RSS::Parser;
foreach my $place ( @places ) {
# retreive feed
my $url=URI->new($place);
my $req=HTTP::Request->new;
$req->method('GET');
$req->uri($url);
my $feed = $p->parse($ua->request($req)->content);
# output some values
my $title = XML::RSS::Parser->ns_qualify('title',$feed->rss_namespace_uri);
print $feed->channel->type.": ".$feed->channel->element($title)->value."\n";
print "item count: ".$feed->item_count()."\n";
foreach my $i ( @{ $feed->items } ) {
foreach ( keys %{ $i->element } ) {
print $_.": ".$i->element($_)->value."\n";
}
print "\n";
}
# data dump of the feed to screen.
my $d = Data::Dumper->new([ $feed ]);
print $d->Dump."\n\n";
}
谢谢当您访问internet上的资源时,总是有可能访问失败。执行错误管理:
my $response = $ua->get('http://search.cpan.org/');
if ($response->is_success) {
print $response->decoded_content; # or whatever
} else {
die $response->status_line;
}
-从地下室偷来的
注意使用解码内容
,这样更好。另外,请注意,对于简单的GET
,没有手动生成请求。您需要用解析代码替换打印
当我试图使用浏览器访问您提供的URL时,我超时了
您还可以查看$p->parse
返回的内容实际上是否正常:
die "Couldn't parse feed" unless $feed;
另外,
使用警告
非常感谢。。。它工作!!!我对perl比较陌生,所以这类问题对我来说非常困难。