« Voltar
em .net core c# rss
Criando um leitor de RSS com C#

Criando um leitor de RSS com C#.

Eu tô começando um projeto novo com C# onde eu preciso ler RSS de sites, algo que nunca fiz.

Fui dar uma pesquisada e descobri a classe XDocument, que é relativamente simples de se trabalhar.
Ela tem um método estático chamado Load, onde você passa como parâmetro a url ou endereço físico de um arquivo RSS e ele devolve o RSS carregado dentro de um XDocument:

XDocument feed = XDocument.Load(url);  

Criei então uma classe chamada RssParser, que tem apenas um método estático chamado Parse, que recebe como parâmetro uma URL, carrega o RSS dessa url e depois mapeia o resultado:

   public class RssParser
    {
        public static IList<Item> Parse(string url)
        {
            try
            {
                XDocument feed = XDocument.Load(url);
                var entries = from item in feed.Root.Descendants().First(i => i.Name.LocalName == "channel").Elements().Where(i => i.Name.LocalName == "item")
                              select new Item
                              {
                                  Title = item.Elements().First(i => i.Name.LocalName == "title").Value,
                                  Content = item.Elements().First(i => i.Name.LocalName == "description").Value,
                                  Link = item.Elements().First(i => i.Name.LocalName == "link").Value,
                                  PublishDate = Convert.ToDateTime(item.Elements().First(i => i.Name.LocalName == "pubDate").Value)
                              };
                return entries.ToList();
            }
            catch(Exception ex)
            {
                return new List<Item>();
            }
        }

Depois de carregar o arquivo, faço uma query com LINQ para pegar cada um dos resultados e mapear para objetos do tipo Item, uma classe que criei com os dados de cada item do arquivo:

    public class Item
    {
        public string Title { get; set; }
        public string Content { get; set; }
        public string Link { get; set; }
        public DateTime PublishDate { get; set; }
    }

Como o método estático devolve uma lista de Item, basta usar dessa maneira para trabalhar com ele:

List<Item> items = RssParser.Parse("gabsferreira.com/rss");  

E essa variável items será preenchida com os dados do último post do meu blog.

Muita coisa a se fazer ainda

Pretendo melhorar e trabalhar ainda mais nesse projetinho. Na verdade ele é o ponto inicial de um outro projeto maior que estou fazendo, e que logo mais eu escrevo sobre aqui :)

Se você quiser, o código está no meu Github.


Quer ficar em dia com os meus posts e novidades?

Participe do grupo no Telegram!

Aproveite e também e inscreva na minha newsletter, me segue no Twitter e na minha página!

Se você gosta dos meus posts, me apoie pra eu manter tudo aqui funcionando e ainda criar mais coisas :)

comments powered by Disqus