Xml 什么';Perl中解析RSS/Atom的最佳库是什么?

Xml 什么';Perl中解析RSS/Atom的最佳库是什么?,xml,perl,rss,cpan,atom-feed,Xml,Perl,Rss,Cpan,Atom Feed,我注意到自2005年以来就没有更新过。这仍然是解析RSS或Atom的推荐库吗?有更好的方法吗?如果XML::RSS::Parser适合您,请使用它。我曾使用XML::Parser处理RSS,但我的需求很小,而且已经安装了XML::Parser 仅仅因为某些东西在几年内被更新了,并不意味着它不再工作;我认为各种RSS/Atom规范最近没有改变,因此解析器没有必要改变。我现在实际上喜欢避免使用特定于域的XML解析器,而只使用XPath来处理所有事情。这样我只需要记住一个API。(除非它是一个巨大的X

我注意到自2005年以来就没有更新过。这仍然是解析RSS或Atom的推荐库吗?有更好的方法吗?

如果XML::RSS::Parser适合您,请使用它。我曾使用XML::Parser处理RSS,但我的需求很小,而且已经安装了XML::Parser


仅仅因为某些东西在几年内被更新了,并不意味着它不再工作;我认为各种RSS/Atom规范最近没有改变,因此解析器没有必要改变。

我现在实际上喜欢避免使用特定于域的XML解析器,而只使用XPath来处理所有事情。这样我只需要记住一个API。(除非它是一个巨大的XML,否则我将使用基于事件的解析器,如。)

因此,使用,我可以从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;
    ...
}

虽然不是世界上最漂亮的代码,但它确实有效。

我不确定它是否是“推荐库”。如果我知道需要解析哪种类型的提要,我会使用or,但如果(更有可能)我只知道这是一个web提要,我会使用

添加一个按请求使用XML::Feed的示例

use XML::Feed;

my $feed = XML::Feed->parse(\$string_containing_feed);

foreach ($feed->entries) {
  print $_->title, "\n";
  print $_->content->body, "\n";
}

这几乎都是从模块文档中复制的。

还有一个非常好的模块,名为
XML::FeedPP
(请参阅)
FeedPP
没有那么快,但它几乎是用纯Perl编写的,并且具有最低限度的依赖性。

您向XPath提供了什么?url还是XML文件?