Forum Webscript.Ru

Программирование => Perl => Тема начата: smirnoffds от 23 Января 2005, 02:32:00

Название: XML::RSS::Parser
Отправлено: 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\';

Хоть убейте не понимаю, что он хочет.
Название: XML::RSS::Parser
Отправлено: glebushka от 23 Января 2005, 16:10:06
а перевести сообщение об ошибке в голову не приходило?
Название: XML::RSS::Parser
Отправлено: smirnoffds от 24 Января 2005, 02:45:04
милый glebushka, я наивно надеялся, что посетителям этого форума не требуется перевод. учите английский или воспользуйтесь lingvo.ru.
Название: XML::RSS::Parser
Отправлено: Green Kakadu от 24 Января 2005, 11:10:46
Цитировать
smirnoffds:
я наивно надеялся, что посетителям этого форума не требуется перевод. учите английский или воспользуйтесь lingvo.ru.

млин, это касалось тебя - там же написано в чем проблема
Название: XML::RSS::Parser
Отправлено: smirnoffds от 24 Января 2005, 13:07:10
Green Kakadu:
что там написано -- я, в общем, понимаю; но откуда это берется -- нет, иначе не стал бы спрашивать.
XML/RSS/Parser.pm -- CPAN-овский модуль; каким образом он внутри себя при вызове снаружи его собственного метода получает ошибку?
Название: XML::RSS::Parser
Отправлено: NeoNox от 25 Января 2005, 12:47:37
$feed = $p->parsefile(\'file.xml\')
Ты уверен что file.xml существует и у него есть права на чтение?
Ты уверен что твой файл имеет валидную разметку?
http://www.feedvalidator.org/
Название: XML::RSS::Parser
Отправлено: smirnoffds от 25 Января 2005, 13:28:46
NeoNox : на оба вопроса ответ "да". Модуль XML::RSS все читает и парсит; валидатор валидирует.

К тому же, в RSS::XML::Parser-е не работает не только parsefile, но и parse, которому я отдаю опять же вполне валидный текст, который забираю из других (проверенных) источников.
Название: XML::RSS::Parser
Отправлено: NeoNox от 25 Января 2005, 13:52:55
Этот код работает?
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";
}
Название: XML::RSS::Parser
Отправлено: smirnoffds от 25 Января 2005, 13:56:02
Увы.

==
$ perl getrss2.cgi

Can\'t call method "find_rss_namespace" on an undefined value at XML/RSS/Parser.pm line 37.
==
Название: XML::RSS::Parser
Отправлено: NeoNox от 25 Января 2005, 14:02:05
Версия XML::RSS::Parser?
Название: XML::RSS::Parser
Отправлено: smirnoffds от 25 Января 2005, 18:02:39
(прошу прощения, что надолго пропадал)

версия -- свежак
$VERSION = 3.01;
Название: XML::RSS::Parser
Отправлено: NeoNox от 25 Января 2005, 18:36:27
perl -MXML::RSS::Parser -e \'print $XML::RSS::Parser::VERSION\'
Название: XML::RSS::Parser
Отправлено: smirnoffds от 25 Января 2005, 18:39:28
3.01
Название: XML::RSS::Parser
Отправлено: NeoNox от 25 Января 2005, 18:41:22
Ну в таком случае у меня 2.1 и все работает. Вопросы автору модуля.
Название: XML::RSS::Parser
Отправлено: smirnoffds от 25 Января 2005, 18:45:45
я ставил с CPANа.
надо будет найти более древнюю версию.

спасибо!
Название: XML::RSS::Parser
Отправлено: smirnoffds от 26 Января 2005, 23:08:30
NeoNox: поставил 2.15. работает!