Я заметил, что XML::RSS::Parser не был обновлен с 2005 года. Является ли это еще рекомендуемой библиотекой для разбора RSS или Atom? Есть лучший или лучший способ?Какая лучшая библиотека для разбора RSS/Atom в Perl?
ответ
Я не уверен, что это была «рекомендуемая библиотека». Если я знаю, какой тип фида мне нужен, я использую XML::RSS или XML::Atom, если это необходимо, но если (как это более вероятно), я просто знаю, что это веб-лента, я использую XML::Feed.
Добавление примера использования XML :: Корм по запросу ..
use XML::Feed;
my $feed = XML::Feed->parse(\$string_containing_feed);
foreach ($feed->entries) {
print $_->title, "\n";
print $_->content->body, "\n";
}
Это все в значительной степени скопирован из документации модуля.
Если XML :: RSS :: Parser работает для вас, используйте его. Я использовал XML :: Parser для работы с RSS, но у меня были узкие требования, и XML :: Parser уже был установлен.
Просто потому, что что-то обновлено через несколько лет, это не значит, что оно больше не работает; Я не думаю, что различные спецификации RSS/Atom изменились в последнее время, поэтому нет необходимости в том, чтобы парсер изменился.
На самом деле мне нравится избегать парсеров XML, специфичных для домена, и просто используйте XPath для всего. Таким образом, мне нужно запомнить только один API. (Если это не огромный XML, то я буду использовать анализатор на основе событий, как XML::Parser.)
Таким образом, используя XML::XPath, я могу захватить кучу вещей из RSS-файла, как это:
my $rss = get_rss();
my $xp = XML::XPath->new(xml => $rss);
my $stories = $xp->find('/rss/channel/item');
foreach my $story($stories->get_nodelist) {
my $url = $xp->find('link', $story)->string_value;
my $title = $xp->find('title', $story)->string_value;
...
}
Не самый красивый код в мире, но он работает.
Существует также очень хороший модуль под названием XML::FeedPP
(см. http://search.cpan.org/dist/XML-FeedPP/lib/XML/FeedPP.pm). FeedPP
не так быстро, но он написан в почти чистом Perl и имеет минималистические зависимости.
Мне тоже очень повезло. – Marcus
Не могли бы вы отобразить фрагмент, чтобы напечатать заголовок и содержимое записи в блоге с помощью XML :: Feed? – xenoterracide
Добавлен пример моего ответа. –