组合多个RSS源

时间:2009-09-17 19:25:21

标签: c# rss

我已成功使用"union" as described here在c#项目中加入两个RSS源,但我们有一个场景,我们可以将多达一百个RSS源连接在一起。这个数量的饲料最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

我会使用SelectMany()(通过LINQ显示)将Feed展平为单个序列,然后使用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()一起使用。

答案 1 :(得分:0)

  • 使用单个根节点创建XML文档
  • 阅读所有辅助RSS源的根节点的子项
  • 将这些子项附加到“新建XML文档”根节点

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