2008-09-25 37 views
1

这可能很奇怪,你有没有遇到过你想按时间顺序阅读的博客?那个博客可能很老,有几百个帖子。当我将此供稿添加到我的供稿阅读器时,比如说googlereader,最新的供稿来自顶端,当我向下滚动时,会出现较旧的帖子。如果您想从头开始阅读,这可能会令人沮丧。有没有这样的读者?或者,我很乐意将它作为一个宠物项目,(最好在c#中),我应该怎么做呢?另外,有没有.NET库可以用来处理RSS提要?我之前没有做过任何RSS提要编程。逆转RSS源

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

回答

2

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

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

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

private SyndicationFeed m_feed; 
private List<SyndicationItem> m_items; 

...snip... 

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

在Google阅读器中,当您阅读Feed时,有一个“Feed settings ...”菜单,其中包含“按最新排序”,“按最早排序”选项。

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

无需编程。

+0

排序方式最早只显示过去30天的项目。没有太大的帮助 – ashwnacharya 2008-09-25 21:54:36

+0

你会受到饲料实际踢出的限制。并非所有Feed都显示所有历史帖子。事实上,这将是一个可怕的想法。 – 2008-09-25 21:56:10

2

我想你可能会遇到这个问题。许多RSS提要只保留最近10篇左右的帖子,所以自从博客开始以后,就无法从提要中提供旧数据。

+0

如果我等了很长时间,Google Reader会将所有帖子都发给我。我唯一的问题是它的提取顺序。 – ashwnacharya 2008-09-25 21:59:58

+0

如果RSS提要没有提供,Google阅读器将无法提取所有帖子。虽然这个标准以前只是一个RSS提要中的10个条目,但我不知道是否有人再遵循这个条款。 – y0mbo 2008-10-20 15:06:22

0

这应该是任何语言相当容易......所有你需要做的是阅读提要XML转换成一个DOM结构(几乎所有languauges包括C#有一个DOMDocument类)

然后,您应该能够简单地通过以相反的顺序项目节点环......

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

至于对方表示,这取决于RSS源,你可能只得到物品数量是有限的。

1

在谷歌阅读器中,您可以让它显示文件夹(feed)中的项目,从最新到最旧或从最旧到最新。为此,选择供稿,选择“供稿设置”下拉菜单,然后选择“按最早排序”。我不确定Google Reader会有多远,但可能一开始就开始监控Feed。