【问题标题】:Combining multiple RSS feeds组合多个 RSS 提要
【发布时间】:2009-09-17 19:25:21
【问题描述】:

我已经成功地使用"union" as described here 在一个 c# 项目中加入了两个 RSS 提要,但是我们有一个场景,我们可以有多达一百个 RSS 提要加入在一起。拥有这么多提要的最佳方式是什么?

【问题讨论】:

    标签: c# rss


    【解决方案1】:

    我会使用 SelectMany()(此处通过 LINQ 显示)将提要扁平化为单个序列,然后使用 Distinct() 过滤掉您已经看到的重复项:

    var feeds = new[] {
        "http://stackoverflow.com/feeds/tag/silverlight",
        "http://stackoverflow.com/feeds/tag/wpf"
    };
    
    var items = from url in feeds
                from xr in XmlReader.Create(url).Use()
                let feed = SyndicationFeed.Load(xr)
                from i in feed.Items
                select i;
    var newFeed = new SyndicationFeed(items.Distinct());
    

    Use()described here 的扩展方法,用于在阅读器使用后进行清理。您可能还需要定义自己的 IEqualityComparer<SyndicationItem> 以与 Distinct() 一起使用。

    【讨论】:

      【解决方案2】:
      • 使用单个根节点创建 XML 文档
      • 读取所有辅助 RSS 提要的根节点的子节点
      • 将这些子节点附加到新 XML 文档根节点

      要解决“节点已经属于另一个文档”的问题,只需从根节点获取内部 XML,并将其附加到聚合文档的内部 XML。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-20
        • 2010-09-06
        • 1970-01-01
        • 2019-03-07
        • 2016-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多