2010-10-20 3 views

ответ

14

Я не уверен, что это была «рекомендуемая библиотека». Если я знаю, какой тип фида мне нужен, я использую 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"; 
} 

Это все в значительной степени скопирован из документации модуля.

+1

Не могли бы вы отобразить фрагмент, чтобы напечатать заголовок и содержимое записи в блоге с помощью XML :: Feed? – xenoterracide

+0

Добавлен пример моего ответа. –

5

Если XML :: RSS :: Parser работает для вас, используйте его. Я использовал XML :: Parser для работы с RSS, но у меня были узкие требования, и XML :: Parser уже был установлен.

Просто потому, что что-то обновлено через несколько лет, это не значит, что оно больше не работает; Я не думаю, что различные спецификации RSS/Atom изменились в последнее время, поэтому нет необходимости в том, чтобы парсер изменился.

5

На самом деле мне нравится избегать парсеров 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; 
    ... 
} 

Не самый красивый код в мире, но он работает.

4

Существует также очень хороший модуль под названием XML::FeedPP (см. http://search.cpan.org/dist/XML-FeedPP/lib/XML/FeedPP.pm). FeedPP не так быстро, но он написан в почти чистом Perl и имеет минималистические зависимости.

+1

Мне тоже очень повезло. – Marcus

 Смежные вопросы

  • Нет связанных вопросов^_^