将两个SyndicationFeeds [英] Combining two SyndicationFeeds

查看:132
本文介绍了将两个SyndicationFeeds的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

什么是简单的方法来组合供稿 feed2 ?我想从 feed2 添加到供稿的项目。此外,我想避免重复为供稿可能已经有项目时,一个问题是标签与WPF和Silverlight的。

 乌里feedUri =新的URI(http://stackoverflow.com/feeds/tag/silverlight);
XmlReader的读者= XmlReader.Create(feedUri.AbsoluteUri);
SyndicationFeed饲料= SyndicationFeed.Load(读卡器);

乌里feed2Uri =新的URI(http://stackoverflow.com/feeds/tag/wpf);
XmlReader的reader2 = XmlReader.Create(feed2Uri.AbsoluteUri);
SyndicationFeed feed2 = SyndicationFeed.Load(reader2);
 

解决方案

您可以使用LINQ简化code加入两个列表(不要忘记把System.Linq的你usings,如果必要的参考系统。核心项目中的)这里有一个主要的做工会,并将它们打印到控制台(与读写器进行适当的清理)。

 使用系统;
使用System.Collections.Generic;
使用System.Linq的;
使用System.Text;
使用的System.Xml;
使用System.ServiceModel.Syndication;

命名空间FeedUnion
{
    类节目
    {
        静态无效的主要(字串[] args)
        {
            乌里feedUri =新的URI(http://stackoverflow.com/feeds/tag/silverlight);
            SyndicationFeed饲料;
            SyndicationFeed feed2;
            使用(XmlReader的读者= XmlReader.Create(feedUri.AbsoluteUri))
            {
                饲料= SyndicationFeed.Load(读卡器);
            }
            乌里feed2Uri =新的URI(http://stackoverflow.com/feeds/tag/wpf);
            使用(XmlReader的reader2 = XmlReader.Create(feed2Uri.AbsoluteUri))
            {
            feed2 = SyndicationFeed.Load(reader2);
            }
            SyndicationFeed feed3 =新SyndicationFeed(feed.Items.Union(feed2.Items));
            StringBuilder的建设者=新的StringBuilder();
            使用(XmlWriter的作家= XmlWriter.Create(制造商))
            {
                feed3.SaveAsRss20(作家);
                System.Console.Write(builder.ToString());
                System.Console.Read();
            }
        }
    }
}
 

What's a simple way to combine feed and feed2? I want the items from feed2 to be added to feed. Also I want to avoid duplicates as feed might already have items when a question is tagged with both WPF and Silverlight.

Uri feedUri = new Uri("http://stackoverflow.com/feeds/tag/silverlight");
XmlReader reader = XmlReader.Create(feedUri.AbsoluteUri);
SyndicationFeed feed = SyndicationFeed.Load(reader);    

Uri feed2Uri = new Uri("http://stackoverflow.com/feeds/tag/wpf");
XmlReader reader2 = XmlReader.Create(feed2Uri.AbsoluteUri);
SyndicationFeed feed2 = SyndicationFeed.Load(reader2);

解决方案

You can use LINQ to simplify the code to join two lists (don't forget to put System.Linq in your usings and if necessary reference System.Core in your project) Here's a Main that does the union and prints them to console (with proper cleanup of the Reader).

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();
            }
        }
    }
}

这篇关于将两个SyndicationFeeds的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆