Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
RSS é uma tecnologia muito útil para pessoas que, assim como eu, investem parte do seu tempo lendo o conteúdo gerado por vários blogueiros da nossa área. Se você quer saber mais sobre os esquemas que formam essa tecnologia de agregação, clique aqui.
/applications/core/interface/imageproxy/imageproxy.php?img=http://conteudo.imasters.com.br/21533/38900.jpg&key=a859b36d7721449551f3e3069f640dbcf095ec37eede314cffe4899cc89e949c" alt="38900.jpg" />
No momento estou produzindo um projeto que irá gerenciar e publicar conteúdo, então precisei consumir alguns feeds através de uma aplicação .NET. Como sou preguiçoso, fiz uma pequena pesquisa e esbarrei com uma biblioteca Open Source de leitura de feeds, o RSS.NET.
A biblioteca possui um design Old School, da época que não existia Generics e herdávamos de CollectionBase para ter uma classe de coleção mais legível. Apesar de simples, a biblioteca é muito poderosa e de fácil utilização. Vejam como consumir um feed no código a seguir:
[TestMethod]
public void Informacoes_basicas_do_feed()
{
var url = "http://heroisdati.com/feed/";'>[http://heroisdati.com/feed/"](http://heroisdati.com/feed/);
// Realiza a leitura do feed.
var feed = RssFeed.Read(url);
// Informa a URL do Feed que foi carregado.
Assert.AreEqual(url, feed.Url);
// Versão do feed.
Assert.AreEqual(RssVersion.RSS20, feed.Version);
// Indica se o que foi retornado é um cache.
Assert.IsFalse(feed.Cached);
// Tag de identidade do feed. Um hash utilizado para controlar o cache.
Trace.WriteLine(feed.ETag);
// Última data de modificação.
Trace.WriteLine(feed.LastModified);
}Além das informações básicas do feed, você também acessa as informações sobre os canais que o mesmo contém. Confira o código:
[TestMethod]
public void Informacoes_sobre_o_canal()
{
var feed = RssFeed.Read("[http://heroisdati.com/feed/"](http://heroisdati.com/feed/));
// Indica quantos canais o feed contem.
Assert.AreEqual(1, feed.Channels.Count);
// O canal descreve o conteúdo do feed.
var heroisdati = feed.Channels[0];
// Título do canal.
Assert.AreEqual("Heróis da T.I.", heroisdati.Title);
// Link do canal.
Assert.AreEqual("[http://www.heroisdati.com/",](http://www.heroisdati.com/) heroisdati.Link.ToString());
// Descrição do canal.
Assert.AreEqual("Por Denis Ferrari", heroisdati.Description);
}No canal, você terá acesso a todos os seus itens, podendo utilizar todas as informações necessárias para o acesso à informação. Vejam como é simples:
[TestMethod]
public void Informacoes_dos_posts()
{
var feed = RssFeed.Read("[http://heroisdati.com/feed/"](http://heroisdati.com/feed/));
var heroisdati = feed.Channels[0];
// Quantidade de posts no canal.
Trace.WriteLine(heroisdati.Items.Count);
// O último post é o mais novo.
var ultimoPost = heroisdati.Items[0];
// Título do post.
Trace.WriteLine(ultimoPost.Title);
// Link do post.
Trace.WriteLine(ultimoPost.Link);
// Autor do post.
Trace.WriteLine(ultimoPost.Author);
// Descrição do post.
Trace.WriteLine(ultimoPost.Description);
// Link para os comentários do post.
Trace.WriteLine(ultimoPost.Comments);
// Na prática, essa coleção apresenta as categorias e as tags.
foreach (RssCategory categoria in ultimoPost.Categories)
{
// Nome da categoria
Trace.WriteLine(categoria.Name);
}
}Essa biblioteca é muito simples e poderosa. Já possui uma versão comercial melhorada, mas a Open Source me atendeu bem até agora. Sendo assim, se precisar trabalhar com RSS, fica a dica da biblioteca.
Links importantes:
http://imasters.com.br/artigo/21533/dotnet/construindo-uma-biblioteca-de-agregacao-rssnet
Carregando comentários...