2009-08-29 20 views
9

¿Es práctico/posible utilizar la serialización para leer datos de una fuente RSS? Básicamente, quiero extraer información de mi cola de Netflix (provista de una fuente RSS), y estoy tratando de decidir si la serialización es factible/posible, o si debería usar algo como XMLReader. Además, ¿cuál sería la mejor manera de descargar el feed de una URL? Nunca he sacado archivos de nada más que unidades, así que no estoy seguro de cómo hacerlo.Deserialización de una fuente RSS en .NET

Respuesta

18

Si puede utilizar LINQ, LINQ to XML es una manera fácil de conseguir en los conceptos básicos de un documento RSS.

Esto es de something I wrote para seleccionar una colección de tipos anónimos a partir de mi blog RSS, por ejemplo:

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

usted debería ser capaz de utilizar algo muy similar en contra de su alimentación Netflix.

3

Si está utilizando .NET 3.0 o 3.5 ... entonces le sugiero que use un XMLReader para leer el documento en un XDocument. Luego puede usar LINQ to XML para consultar contra y convertir la fuente RSS en algo utilizable.

Crear algo para deserializar el XML también es posible y funcionará igual de bien (si no mejor) pero requerirá más tiempo para crearlo.

De cualquier forma funcionará ... haga lo que le resulte más cómodo (o, si está tratando de aprender la serialización XML, apúntelo y aprenda algo nuevo).

15

El .NET 3.5 framework agregó soporte de sindicación. El System.ServiceModel.Syndication espacio de nombres proporciona un montón de tipos para gestionar la alimentación, el contenido de la alimentación y de las categorías, el formato de alimentación (RSS 2.0, Atom 1.0), etc.

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

usted tiene algunas opciones para serialización, pero la más sencilla es probablemente el mejor descrito aquí:

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

+0

Me tomó un vistazo a esto, pero parece que el espacio de nombres sólo proporciona opciones de serialización, no opciones de deserialización, a menos que me daba algo. – MGSoto

+0

Se "deserializa" mediante el método estático SyndicationFeed.Load. Detecta automáticamente el formato de entrada. Si necesita más control, puede usar los formateadores directamente ... todos ellos tienen un método ReadFrom que toma un XmlReader. – jrista

+0

Voy a echar un vistazo a esto cuando llegue a casa, es genial saber si alguna vez tengo que hacer otro proyecto de RSS. – MGSoto

2

Consulte this link para obtener una rutina de descarga bastante completa.

RSS es básicamente un derivado de XML. Me gusta this link para definir el formato RSS. This one tiene una muestra realmente básica.

4
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; 
    } 
Cuestiones relacionadas