在.NET中反序列化RSS提要

使用序列化从RSS提要中读取数据是否可行/可行? 我基本上想从我的Netflix队列中提取信息(从RSS提要提供),我正在尝试确定序列化是否可行/可行,或者我是否应该使用类似XMLReader的东西。 另外,从URL下载Feed的最佳方法是什么? 除了驱动器,我从来没有从任何东西中提取文件,所以我不知道如何去做。

如果您可以使用LINQ,LINQ to XML是了解RSS feed文档基础知识的简便方法。

这是我写的一些东西 ,从博客的RSS源中选择一组匿名类型,例如:

protected void Page_Load(object sender, EventArgs e) { XDocument feedXML = XDocument.Load("http://feeds.encosia.com/Encosia"); var feeds = from feed in feedXML.Descendants("item") select new { Title = feed.Element("title").Value, Link = feed.Element("link").Value, Description = feed.Element("description").Value }; PostList.DataSource = feeds; PostList.DataBind(); } 

您应该可以使用与Netflix Feed非常相似的内容。

.NET 3.5框架增加了联合支持。 System.ServiceModel.Syndication命名空间提供了一系列类型来管理订阅源,订阅源内容和类别,订阅源格式(RSS 2.0,Atom 1.0)等。

http://msdn.microsoft.com/en-us/library/system.servicemodel.syndication.aspx

您有一些序列化选项,但最简单的可能是最好的描述:

http://msdn.microsoft.com/en-us/library/bb536530.aspx

 using System.ServiceModel.Syndication; public static SyndicationFeed GetFeed(string uri) { if (!string.IsNullOrEmpty(uri)) { var ff = new Rss20FeedFormatter(); // for Atom you can use Atom10FeedFormatter() var xr = XmlReader.Create(uri); ff.ReadFrom(xr); return ff.Feed; } return null; } 

如果您使用的是.NET 3.0或3.5 …那么我建议使用XMLReader将文档读入XDocument。 然后,您可以使用LINQ to XML查询并将RSS提要呈现为可用的内容。

构建用于反序列化XML的东西也是可行的,并且执行效果也一样好(如果不是更好),但创建时间会更长。

无论哪种方式都可行…做你更熟悉的事情(或者,如果你正在尝试学习XML序列化,那就去学习新东西)。

查看此链接以获得完整的下载例程。

RSS基本上是XML的衍生物。 我喜欢这个用于定义RSS格式的链接 。 这个有一个非常基本的样本。

  • 从http://www.thearchitect.co.uk/schemas/rss-2_0.xsd获取rss架构
  • 使用xsd.exe生成C#类。 xsd rssschema.xsd / c
  • 在运行时,使用上面生成的xsd和类反序列化rss xml。