Объединение двух SyndicationFeeds

10
задан Michael Brown 15 April 2009 в 08:08
поделиться

3 ответа

Можно использовать LINQ для упрощения кода для присоединения, два списка (не забывайте помещать Систему. Linq в Ваших использованиях и если необходимая ссылочная Система. Ядро в Вашем проекте), Вот Основное, которое делает объединение и печатает их к консоли (с надлежащей очисткой Читателя).

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.ServiceModel.Syndication;

namespace FeedUnion
{
    class Program
    {
        static void Main(string[] args)
        {
            Uri feedUri = new Uri("http://stackoverflow.com/feeds/tag/silverlight"); 
            SyndicationFeed feed;
            SyndicationFeed feed2;
            using(XmlReader reader = XmlReader.Create(feedUri.AbsoluteUri))
            {
                feed= SyndicationFeed.Load(reader); 
            }
            Uri feed2Uri = new Uri("http://stackoverflow.com/feeds/tag/wpf"); 
            using (XmlReader reader2 = XmlReader.Create(feed2Uri.AbsoluteUri))
            {
            feed2 = SyndicationFeed.Load(reader2);
            }
            SyndicationFeed feed3 = new SyndicationFeed(feed.Items.Union(feed2.Items));
            StringBuilder builder = new StringBuilder();
            using (XmlWriter writer = XmlWriter.Create(builder))
            {
                feed3.SaveAsRss20(writer);
                System.Console.Write(builder.ToString());
                System.Console.Read();
            }
        }
    }
}
11
ответ дан 4 December 2019 в 00:27
поделиться

Ну, одна возможность состоит в том, чтобы создать новую ленту RSS, которая является клоном первого канала, и затем просто выполните итерации через каждое сообщение на втором, проверьте первое на его существование и добавьте его, если это не существует.

Что-то вроде:

SyndicationFeed newFeed = feed.clone;
foreach(SyndicationItem item in feed2.items)
{
  if (!newFeed.contains(item))
    newFeed.items.Add(item);
}

смогший, чтобы сделать это. Похоже, что 'объекты' являются простым enumberable списком объектов синдикации, таким образом, нет причины, Вы не можете просто добавить их.

1
ответ дан 4 December 2019 в 00:27
поделиться

Если это только для stackoverflow, можно использовать это:
https://stackoverflow.com/feeds/tag/silverlight%20wpf
Это сделает объединение двух тегов.

Для более общего решения я не знаю. Необходимо было бы, вероятно, вручную выполнить итерации элементов двух подачи и присоединиться к ним вместе. Можно сравнить <идентификатор> элементы <записи> s, чтобы видеть, являются ли они дубликатами.

0
ответ дан 4 December 2019 в 00:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: