Hacer un FeedReader fácilmente en .NET Core 3.1
Introducción
Los feeds de RSS en los websites no es algo precisamente nuevo.
Su formato xml tampoco es nada nuevo.
Y a lo largo de muchísimos años, seguramente hemos usado muchas aplicaciones que nos permitían leer esos feeds fácilmete.
El caso es que por «viejuno» que nos pueda parecer, aún hoy se siguen usando, y aún hoy siguen siendo útiles.
En esta entrada, te voy a mostrar cómo leer un feed en .NET Core 3.1 de forma extraordinariamente fácil y rápida, gracias al uso de una librería de Microsoft que nos permite ejecutar esta acción sin apenas esfuerzo.
System.ServiceModel.Syndication
Todo lo que necesitamos, es hacer referencia al ensamblado System.ServiceModel.Syndication.
Para hacer referencia a ese ensamblado, deberemos instalar su correspondiente paquete NuGet que encontraremos aquí.
La última versión de este paquete que existe para .NET Core 3.1 (a la hora de escribir esta entrada) es la 4.7.0.
Si lo que quieres es utilizar este paquete en .NET 5, deberás instalarte la versión 5.0.0 ó superior del paquete, y que actualmente está en versión RC1.
Usando System.ServiceModel.Syndication
Una vez que hemos referenciado el paquete NuGet a nuestro proyecto, estaremos preparados para poder utilizarlo.
Existen algunas variantes que podemos utilizar, pero el siguiente código que voy a compartir es el uso general de esta librería.
Teniendo una url de feed localizada y que queremos consumir, declararemos una variable con la url, y posteriormente leeremos los feeds.
var url = "https://geeks.ms/jorge/feed/"; using var reader = XmlReader.Create(url);
Nótese que para leer los feeds que están en formato XML, utilizaremos el namespace System.Xml.
Una vez que hemos leído los feeds del feed que hemos indicado como url, vamos a cargarlo, utilizando para ello la clase SyndicationFeed, y a través de esta clase, el método Load.
var feed = SyndicationFeed.Load(reader);
Y por último, y una vez leídos los feeds y cargado el mismo, vamos a leer la colección de feeds para recorrerlos y mostrar su información en pantalla dentro de nuestra aplicación de consola (en este caso).
La colección Items representa los diferentes feeds:
foreach (var item in feed.Items) ...
Y por cada uno, tenemos una serie de propiedades que contiene la información que esperamos.
Por ejemplo:
foreach (var item in feed.Items) { Console.WriteLine(item.Title.Text); Console.WriteLine(item.Links[0].Uri); Console.WriteLine(item.PublishDate); }
Código del ejemplo completo
El ejemplo completo de este lector de feeds lo puedes encontrar en mi cuenta de GitHub, concretamente aquí (https://github.com/J0rgeSerran0/Blog-FeedReader).
Happy Coding!