【问题标题】:Reversing an RSS feed反转 RSS 提要
【发布时间】:2008-09-25 21:50:21
【问题描述】:

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

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

【问题讨论】:

    标签: .net rss feed


    【解决方案1】:

    如果您决定推出自己的 C# 应用程序来执行此操作,则在当前版本的 .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;
    

    【讨论】:

      【解决方案2】:

      在 Google 阅读器中,当您阅读提要时,会出现一个“提要设置...”菜单,其中包含以下选项:“按最新排序”、“按最旧排序”。

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

      无需编程。

      【讨论】:

      • 按最早排序仅显示过去 30 天的项目。帮助不大
      • 您将受到提要实际踢出的内容的限制。并非所有提要都显示所有历史帖子。事实上,这将是一个糟糕的主意。
      【解决方案3】:

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

      【讨论】:

      • 如果我等待的时间足够长,Google 阅读器会获取我所有的帖子。我唯一的问题是它获取的顺序。
      • 如果 RSS 提要未提供所有帖子,Google 阅读器将无法获取它们。过去的标准是一个 RSS 提要中只有 10 个项目,不过我不知道是否有人再遵循这个标准。
      【解决方案4】:

      在 Google 阅读器中,您可以让它显示文件夹(供稿)中的项目,从最新到最旧,或从最旧到最新。为此,请选择提要,选择“提要设置”下拉菜单,然后选择“按最旧排序”。我不确定 Google Reader 可以追溯到多远,但可能从它第一次开始监控提要以来一直如此。

      【讨论】:

      • 不.. 仅过去 30 天的帖子
      • 啊 - 我不知道。谷歌阅读器至少会给他一些历史。真的不知道还有什么其他选择。
      【解决方案5】:

      这对于任何语言都应该相当容易...您需要做的就是将提要 xml 读入 DOM 结构(包括 C# 在内的几乎所有语言都有一个 DomDocument 类)

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

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

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

      【讨论】:

      • 虽然该 URL 不够具体,不足以回答这个问题,但它是 HTML、DHTML 和 DOM 的一个很好的参考来源。所以我说“谢谢!” @mmattax 为此。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-08
      • 2014-10-04
      • 1970-01-01
      相关资源
      最近更新 更多