Объединение нескольких RSS-каналов - PullRequest
2 голосов
/ 17 сентября 2009

Я успешно использовал "union", как описано здесь , чтобы присоединиться к двум RSS-каналам в проекте c #, но у нас есть сценарий, в котором у нас может быть до сотни RSS-каналов для объединения. Что было бы лучше всего с таким количеством каналов?

Ответы [ 2 ]

2 голосов
/ 18 сентября 2009

Я бы использовал 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() - это метод расширения , описанный здесь для очистки считывателя после его использования. Вам также может понадобиться определить свой собственный IEqualityComparer<SyndicationItem> для использования с Distinct().

0 голосов
/ 17 сентября 2009
  • Создание XML-документа с одним корневым узлом
  • Чтение дочерних узлов корневого узла всех вторичных RSS-каналов
  • Присоединение этих дочерних элементов к корневому узлу New XML Documents

Чтобы обойти проблему «узел уже принадлежит другому документу», просто возьмите Внутренний XML из корневого узла и добавьте его во Внутренний XML объединенного документа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...