反转RSS提要

时间:2020-03-06 14:45:08  来源:igfitidea点击:

这可能很奇怪,我们是否曾经遇到过想要按时间顺序阅读的博客?而且那个博客可能已经很老了,有几百个帖子。当我将此供稿添加到供稿阅读器(例如googlereader)时,最新的供稿会放在顶部,当我进一步向下滚动时,会出现较旧的帖子。如果我们想从头开始阅读,可能会感到沮丧。有读者这样做吗?或者,我想作为一个宠物项目来做(最好是在C#中),我应该怎么做呢?另外,有没有可用于RSS源的.NET库?我之前没有做过任何RSS feed编程。

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

解决方案

在Google阅读器中,当我们阅读供稿时,会出现一个"供稿设置..."菜单,其中包含以下选项:"按最新排序","按最早排序"。

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

无需编程。

我认为我们可能会遇到麻烦。许多RSS feed仅保留最新的10条左右的帖子,因此自博客开始以来,就无法从feed中提供较旧的数据。

使用任何语言,这都应该相当容易...我们需要做的就是将提要xml读取到DOM结构中(几乎所有语言,包括Chave a DomDocument类)

然后,我们应该能够简单地以相反的顺序遍历项目节点...

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

如前所述,根据rss提要,我们可能只会获得有限数量的商品。

在Google阅读器中,我们可以让它从最新到最旧或者从最旧到最新显示文件夹(提要)中的项目。为此,选择提要,选择"提要设置"下拉菜单,然后选择"按最旧的排序"。我不确定Google Reader可以追溯到多久以前,但自从它开始监视提要以来可能一直保持下去。

如果我们决定滚动自己的Capplication来执行此操作,则在当前版本的.NET Framework中,它非常简单。

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

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

private SyndicationFeed m_feed;
private List<SyndicationItem> m_items;

...snip...

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