我目前正在开发一个包含 RSS 提要阅读器的 MVC 项目。
当前的方法是使用 Syndication 库读取 XML 文件,尽管它不支持所有提要类型,而且我不知道如何通过代码先迁移将SyndicationFeed实体添加到我的数据库(MSSQL 2012)中一个关键问题(已经问了一个关于它的问题但没有答案:Syndication keys missing MVC)所以我只是制作了一个从 Syndication 项目中获取其内容的提要模型。关于如何或应该继续使用它甚至切换到不同的工作方式的任何建议?
这是我获取和保存提要的方式:
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 类型迟早会死(或者在这种情况下我弄错了)?
提前致谢!