Forum Webscript.Ru
Программирование => Perl => Тема начата: smirnoffds от 23 Января 2005, 02:32:00
-
Друзья,
при вызове либо parse (my $feed = $p->parse($page);) либо parsefile (my $feed = $p->parsefile(\'file.xml\');) стабильно получаю следующее:
Can\'t call method "find_rss_namespace" on an undefined value at XML/RSS/Parser.pm line 37.
В Parser.pm эта строчка выглядит так:
sub rss_normalize {
my $self = shift;
my $doc = shift;
my $nsq_channel = $doc->find_rss_namespace.\'channel\';
Хоть убейте не понимаю, что он хочет.
-
а перевести сообщение об ошибке в голову не приходило?
-
милый glebushka, я наивно надеялся, что посетителям этого форума не требуется перевод. учите английский или воспользуйтесь lingvo.ru.
-
smirnoffds:
я наивно надеялся, что посетителям этого форума не требуется перевод. учите английский или воспользуйтесь lingvo.ru.
млин, это касалось тебя - там же написано в чем проблема
-
Green Kakadu:
что там написано -- я, в общем, понимаю; но откуда это берется -- нет, иначе не стал бы спрашивать.
XML/RSS/Parser.pm -- CPAN-овский модуль; каким образом он внутри себя при вызове снаружи его собственного метода получает ошибку?
-
$feed = $p->parsefile(\'file.xml\')
Ты уверен что file.xml существует и у него есть права на чтение?
Ты уверен что твой файл имеет валидную разметку?
http://www.feedvalidator.org/
-
NeoNox : на оба вопроса ответ "да". Модуль XML::RSS все читает и парсит; валидатор валидирует.
К тому же, в RSS::XML::Parser-е не работает не только parsefile, но и parse, которому я отдаю опять же вполне валидный текст, который забираю из других (проверенных) источников.
-
Этот код работает?
use strict;
use XML::RSS::Parser;
use LWP::Simple;
use bytes;
my $content = get("http://spectator.ru/rss");
my $p = new XML::RSS::Parser;
my $feed = $p->parse($content);
my $title = XML::RSS::Parser->ns_qualify(\'title\',$feed->rss_namespace_uri);
print $feed->rss_namespace_uri;
print "item count: ".$feed->item_count()."\\n\\n";
foreach my $i ( $feed->items ) {
map { print $_->name.": ".$_->value."\\n" } $i->children;
print "\\n";
}
-
Увы.
==
$ perl getrss2.cgi
Can\'t call method "find_rss_namespace" on an undefined value at XML/RSS/Parser.pm line 37.
==
-
Версия XML::RSS::Parser?
-
(прошу прощения, что надолго пропадал)
версия -- свежак
$VERSION = 3.01;
-
perl -MXML::RSS::Parser -e \'print $XML::RSS::Parser::VERSION\'
-
3.01
-
Ну в таком случае у меня 2.1 и все работает. Вопросы автору модуля.
-
я ставил с CPANа.
надо будет найти более древнюю версию.
спасибо!
-
NeoNox: поставил 2.15. работает!