¿Cómo puedo comenzar a crear un lector de C # RSS?

Hace tiempo que quería hacer un lector de RSS (solo por diversión), pero no tengo la menor idea de por dónde empezar. No entiendo nada sobre RSS. ¿Hay buenos tutoriales en RSS y cómo implementarlo en una aplicación (no un tutorial sobre cómo hacer un lector de RSS, que sería demasiado fácil).

Ver

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

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

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

Básicamente hay muchas cosas en el framework .Net 3.5 que hace el trabajo pesado de analizar y representar feeds; no es difícil escribir una aplicación de 30 líneas que toma una URL de fuente y descarga el feed e imprime el título y el autor de todos los elementos, por ejemplo. (Funciona para RSS 2.0 (¡no para otros!) O Atom.)

Si se está enfocando en la creación de un lector de RSS y no en la lógica de análisis de RSS, es posible que desee delegar la creación / lectura de feeds RSS utilizando esta biblioteca de RSS gratuita llamada Argotic en CodePlex.com

Como se recomendó otro póster, la clase SyndicationFeed y Argotic son las mejores alternativas.

Si el rendimiento es un problema, la clase SyndicationFeed será mucho mejor. Lo evalué como 9 veces más rápido que Argotic en mi hardware.

El problema que he tenido con la clase SyndicationFeed ha sido su capacidad de analizar con éxito cualquier fuente aleatoria desde la ‘red. Falla con una XmlException sorprendentemente a menudo.

Para mis usos, me quedo con Argotic. Después de todo, es de código abierto, por lo que siempre puedo hacer cambios si es necesario.

Te sugiero que uses esto

RSS.NET es una biblioteca de clase .NET de fuente abierta para fonts RSS. Proporciona un modelo de objeto reutilizable para analizar y escribir feeds RSS. Es totalmente compatible con las versiones RSS 0.90, 0.91, 0.92 y 2.0.1, implementando todas las construcciones.

Dado que el feed de sindicación estándar no es compatible con otras versiones de rss.

Debe trabajar con la especificación RSS XML: http://cyber.law.harvard.edu/rss/rss.html

Si escribe un lector con todas las funciones sin usar ninguna biblioteca, también piense que hay fonts de ATOM para analizar.

RSS en sí es realmente simple. Solo una descripción XML de un canal y una lista de elementos en ese canal (posiblemente con archivos adjuntos a cada elemento). Hacer un seguimiento de las actualizaciones es un poco complicado, y administrar las codificaciones y las horas / fechas posteriores también es complicado. La verdadera pesadilla son todas las diferentes “interpretaciones” del formato RSS que usan diferentes sitios. Si realmente está escribiendo un lector de feeds, es posible que desee comenzar a analizar Atom, ya que es un formato más estandarizado, y podría hacerlo avanzar más rápido, con un buen diseño desde el cual se puede derivar a RSS. Pero en realidad, debería usar una biblioteca de análisis RSS, preferiblemente la más compatible disponible (pero no pague por una biblioteca RSS, son lo suficientemente comunes).

RSS es un dialecto XML, por lo que si conoce XML, tiene parte del problema resuelto. Si desea comenzar su proyecto, considere buscar los proyectos de código abierto que ya existen:

http://www.codeplex.com/site/search?projectSearchText=RSS%20Reader

CodePlex (arriba) es un buen lugar para comenzar, ya que la mayoría de los proyectos estarán en C #.

Considere leer el código fuente de RSS Bandit , que es un lector de RSS de C # (posiblemente pronto WPF).

Debería obtener algunas buenas ideas simplemente recorriendo la aplicación.

He estado trabajando bastante con RSS y he descubierto que los datos de ATOM suelen ser más fáciles de analizar con la clase RssSyndication. Para las especificaciones de RSS 2.0, si el feed es de hecho válido, entonces es igual de fácil cargar un XDocument del URI y analizar los datos según sea necesario.

Si no puede usar System.ServiceModel.Syndication.Syndicationfeed , por ejemplo, porque está utilizando una PCL (Biblioteca de clases portátil). Escribí uno: FeedParserPCL . Puedes encontrarlo en NuGet .