Xml Rss提要阅读器:SyndicationFeed编程方式

Xml Rss提要阅读器:SyndicationFeed编程方式,xml,asp.net-mvc,rss,syndication,Xml,Asp.net Mvc,Rss,Syndication,我目前正在开发一个包含RSS提要阅读器的MVC项目 当前的方法是使用Syndication库读取XML文件,尽管它不支持所有的提要类型,我也不知道如何通过代码优先迁移将SyndicationFeed实体添加到我的DB(MSSQL 2012)中,因为存在一个关键问题(已经询问了一个问题,但没有回答:)所以我刚刚制作了一个feed模型,它从联合项目中获取内容。 关于我如何或应该继续使用它,甚至转换到另一种工作方式,有什么建议吗 这是我获取和保存提要的方式: XmlReader reader = Xm

我目前正在开发一个包含RSS提要阅读器的MVC项目

当前的方法是使用Syndication库读取XML文件,尽管它不支持所有的提要类型,我也不知道如何通过代码优先迁移将SyndicationFeed实体添加到我的DB(MSSQL 2012)中,因为存在一个关键问题(已经询问了一个问题,但没有回答:)所以我刚刚制作了一个feed模型,它从联合项目中获取内容。 关于我如何或应该继续使用它,甚至转换到另一种工作方式,有什么建议吗

这是我获取和保存提要的方式:

XmlReader reader = XmlReader.Create(site.RssUrl);
            SyndicationFeed feed = SyndicationFeed.Load(reader);
            var FeedList = feed.Items.ToList();
            foreach (var item in FeedList)
            {
                var dupCheck = db.Feeds.FirstOrDefault(f => f.Title == item.Title.Text);
                if (dupCheck == null)
                {
                    var newFeed = new Feeds() { Date = DateTime.Now.ToString(), SiteId = site.SiteId };

                    if (item.Title != null) newFeed.Title = item.Title.Text;
                    if (item.Summary != null) newFeed.Description = item.Summary.Text;
                    if (item.PublishDate != null) newFeed.PubDate = item.PublishDate.ToString();
                    if (item.Links != null) newFeed.Link = item.Links[0].Uri.ToString();
                    if (feed.ImageUrl != null) newFeed.ImageUrl = feed.ImageUrl.ToString();

                    db.Feeds.Add(newFeed);
                    if (item.Categories.Count != 0)
                        foreach (var category in item.Categories)
                            if (db.Categories.FirstOrDefault(cat => cat.Name == category.Name) == null)
                            {
                                var NewCategory = new Categories() { Name = category.Name };
                                NewCategory.Feeds.Add(newFeed);
                                db.Categories.Add(NewCategory);
                            }
                            else
                                db.Categories.First(cat => cat.Name == category.Name).Feeds.Add(newFeed);
                    db.SaveChanges();
                }
这是提要模型:

public class Feeds
{
    [Key]
    public int FeedId { get; set; }
    public string ImageUrl { get; set; }
    public string Link { get; set; }
    [DataType(DataType.MultilineText)]
    [AllowHtml]
    public string Title { get; set; }
    [DataType(DataType.MultilineText)]
    [AllowHtml]
    public string Description { get; set; }
    public string PubDate { get; set; }
    public string Date { get; set; }
    public int SiteId { get; set; }
}
在读了很多关于它的书之后,我开始意识到XML提要方法是一个正在消亡的方法,可能有一些更好、更有用和不断增长的替代方法,我应该用于阅读提要(例如Twitter列表)

因此,另一个更一般的问题是:我是否应该继续使用XML阅读器?或者我应该考虑一种不同的方法,知道XML RSS类型迟早可能会死(或者我在这种情况下出错)?
提前谢谢

目前,我正在尝试通过SyndicationFeed方法阅读RSS 0.92、0.95、2.0格式,并探索如何将这些“旧”标准与日益流行的Twitter格式集成,以构建新闻聚合器。因此,我并不自称是专家;然而,我的研究表明,使用SyndicationFeed实体方法构建自己的中间Syndication对象和数据读取器(而不是尝试通过CodeFirst迁移实现这一点)是正确的方法。一旦你有了这些对象,你很可能也可以把推特订阅源塞进这些对象。

你的回答实际上让我对我的方法更加自信,谢谢:)只是这样并没有涵盖所有的订阅源类型,我发现自己添加了越来越多的案例,这会减慢我的网站速度(我是一名IT工程师,它真的磨我的齿轮)。真遗憾,没有一个涵盖所有类型的“全方位”库。