反转RSS源

时间:2008-09-25 21:50:21

标签: .net rss feeds

这可能很奇怪,你有没有想过按照时间顺序阅读的博客?这个博客可能很旧,有几百个帖子。当我将此Feed添加到我的Feed阅读器时,比如googlereader,最新的Feed会出现在最顶层,当我向下滚动时,会显示较旧的帖子。如果你想从头开始阅读它,这可能会令人沮丧。有没有读者这样做?或者,我很乐意将其作为一个宠物项目,(最好是在c#中),我该怎么做呢?还有,我可以使用任何.NET库来处理RSS提要吗?我以前没有做任何RSS feed编程。

编辑我想知道这是否有任何技术限制。这是我遇到的一个有趣的问题,我认为可以通过编程方式解决。

5 个答案:

答案 0 :(得分:2)

在Google阅读器中,当您阅读Feed时,会出现“Feed settings ...”菜单,其中包含以下选项:“按最新排序”,“按最旧排序”。

文件夹在“文件夹设置...”菜单下具有相同的选项

无需编程。

答案 1 :(得分:2)

我想你可能会遇到这个问题。许多RSS提要仅保留最新的10个帖子,因此自博客开始以来无法从提要中提供旧数据。

答案 2 :(得分:2)

如果您决定使用自己的C#应用​​程序来执行此操作,那么在当前版本的.NET Framework中它非常简单。

查找System.ServiceModel.Syndication命名空间。它有与RSS和Atom提要相关的类。我最近写了一些代码,它使用这些类从数据库生成一个feed,并将geocode添加到feed项。我遇到了同样的问题,我需要反转Feed中项目的顺序,因为我的数据库查询以我希望用户看到的相反顺序返回它们。

我所做的只是在我自己的List<SyndicationItem>数据结构中保留Feed的SyndicationItem对象列表,直到我想要将Feed写入磁盘。然后我会做这样的事情:

private SyndicationFeed m_feed;
private List<SyndicationItem> m_items;

...snip...

m_items.Reverse();
m_feed.Items = m_items;

答案 3 :(得分:1)

在Google阅读器中,您可以让它显示从最新到最旧,或从最旧到最新的文件夹(Feed)中的项目。要执行此操作,请选择Feed,选择“Feed设置”下拉列表,然后选择“按最旧排序”。我不确定谷歌阅读器有多远,但可能自从它第一次开始监控饲料以来一路走来。

答案 4 :(得分:0)

使用任何语言都应该相当容易......你需要做的就是将feed xml读入DOM结构(几乎所有语言包括C#都有一个DomDocument类)

然后,您应该能够以相反的顺序循环遍历项目节点...

请参阅:http://msdn.microsoft.com/en-us/library/ms756177(VS.85).aspx

正如其他人所说,根据RSS提要,您可能只获得有限数量的项目。