xen*_*ide 13 xml rss perl cpan atom-feed
我注意到自2005年以来XML :: RSS :: Parser尚未更新.这仍然是解析RSS或Atom的推荐库吗?有更好的方式还是更好的方式?
Dav*_*oss 14
我不确定它曾经是"推荐的图书馆".如果我知道需要解析哪种类型的feed,我会根据需要使用XML :: RSS或XML :: Atom,但如果(更有可能)我只知道它是一个web feed,我使用XML :: Feed.
添加按要求使用XML :: Feed的示例..
use XML::Feed;
my $feed = XML::Feed->parse(\$string_containing_feed);
foreach ($feed->entries) {
print $_->title, "\n";
print $_->content->body, "\n";
}
Run Code Online (Sandbox Code Playgroud)
这些都是从模块文档中复制的.
如果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;
...
}
Run Code Online (Sandbox Code Playgroud)
这不是世界上最漂亮的代码,但它确实有效.