Desenvolvimento - C#

Criando RSS XML para o Seu Próprio Site

Caro(a) Leitor(a) hoje vou dar um exemplo um pouco diferente do que venho falando em outros artigos. O objetivo desse artigo é mostrar como criar RSS usando o banco de dados MYSQL.

por Mauricio Junior



O RSS é um formato padronizado mundialmente, que funciona com linguagem XML (Extensible Markup Language), e é usado para compartilhar conteúdo Web. Ele permite, por exemplo, que o administrador de um site de notícias crie um arquivo XML com as últimas manchetes publicadas, a fim de compartilhá-las mais rapidamente com seus leitores. Este arquivo poderá ser lido através de qualquer ferramenta que seja capaz de entender o formato XML do RSS como o Google Reader, Microsoft Reader e outros.

O projeto é do tipo web site que se conecta no banco de dados MySql. Figura 1.

Criando o arquivo .ASPX

Figura 1: Criando o arquivo .ASPX

Crie um arquivo RSS.aspx clicando com o botão direito do mouse no projeto e adicionando um novo item. Esse arquivo gerará automaticamente um XML com os dados trazidos do banco de dados MYSQL.

Criando a classe BancoDados.cs

Figura 2: Criando a classe BancoDados.cs

Crie uma classe chamada BancoDados.cs criando dois métodos dentro da mesma. Uma chamada Conecta() e outra chamada Desconecta().

Segue abaixo a figura mostrando o primeiro método comentado acima:

 Criando a classe conecta e desconecta do banco de dados

Figura 3: Criando a classe conecta e desconecta do banco de dados.

Lembre-se que existe uma string de conexão que usa usuário, senha, nome do servidor e nome do banco de dados. Isso não será tratado dentro deste artigo.

Segue abaixo a figura do segundo método criado na classe BancoDados.cs.

Conecta

Figura 4: Conecta

Depois de criado os dois métodos da classe irei programar dentro da classe RSS.ASPX. Dentro da classe RSS, criei um método protegido sem passar parâmetros e sem retornar parâmetros. O método chama geraRSS().

Segue a figura abaixo mostrando a classe:

Programando no RSS

Figura 5: Programando no RSS.

Dentro dessa classe primeiramente devo importar as classes que usarei.

Veja os importes abaixo:

Listagem 1: Classes importadas

/// para gerar o xml 
using System.Data.Odbc; 
using System.Text; 
using System.Xml; 

Veja a assinatura do método: protected void geraRss(), veja que é void, ou seja, sem retorno e sem parâmetros de entrada como dito antes. Segue todo código desse método a seguir.

Listagem 2: Criando RSS

protected void geraRss() 
{ 
Response.Clear(); 
Response.ContentType = "text/xml"; 
XmlTextWriter objX = new XmlTextWriter(Response.OutputStream, Encoding.UTF8); 
objX.WriteStartDocument(); 
objX.WriteStartElement("rss"); 
objX.WriteAttributeString("version","2.0"); 
objX.WriteStartElement("channel"); 
objX.WriteElementString("title", "ARTIGOS - aspneti.com.br"); 
objX.WriteElementString("link","http://www.aspneti.com.br"); 
objX.WriteElementString("description","Artigos Publicados na Comunidade ASPNETI.COM.BR"); 
objX.WriteElementString("copyright","(c) 2005, ASPNETI.COM.BR, All rights reserved."); 
objX.WriteElementString("ttl","5"); 
BancoDados sBanco = new BancoDados(); 
sBanco.Conecta(); 
string sql = "select ch_artigos, desc_artigos, dt_artigos, tit_artigos from tb_artigos where status_artigos = 'A' order by dt_artigos desc limit 30"; 
OdbcCommand objCommand = new OdbcCommand(sql, sBanco.sConn); 
OdbcDataReader objReader = objCommand.ExecuteReader(); 

while (objReader.Read()) 
{ 
objX.WriteStartElement("item"); 
objX.WriteElementString("title",objReader.GetString(3)); 
objX.WriteElementString("description", "<img src='http://www.seusite.com.br/images/logo.gif'><br>Nome do Site <br><br>" + objReader.GetString(1)); 
objX.WriteElementString("link","http://www.seusite.com.br/link.aspx?Id=" + objReader.GetInt64(0).ToString()); 
objX.WriteElementString("pubDate", objReader.GetDateTime(2).ToString("dd/MM/yyyy")); 
objX.WriteEndElement(); 
} 

objReader.Close(); 
sBanco.Desconecta(); 
objX.WriteEndElement(); 
objX.WriteEndElement(); 
objX.WriteEndDocument(); 
objX.Flush(); 
objX.Close(); 
Response.End(); 
} 

Explicando o método:

Primeiramente crio um objeto XmlTextWriter e vou escrevendo dentro dele. Crio vários elementos (WriteElementString) e vou adicionando as tags. Logo depois instancio a classe criada anteriormente de banco de dados e chamo o método para conectar.

Na linha abaixo, depois de conectar no banco de dados, crio uma variável sql fazendo um select nas tabelas do banco de dados. Não use esse mesmo select, porque estou fazendo para o meu banco de dados e tabelas, você deverá ter o seu banco e suas tabelas. Criei o seu próprio select.

Logo depois, executo e faço um laço adicionando valores aos elementos, depois fecho o objeto e o banco de dados e pronto, terminei de fazer o RSS.

Veja a figura abaixo mostrando executando o código que foi criado acima.

Resultado final

Figura 6: Resultado final.

Espero ter ajudado.

Veja este vídeo para aprender a consumir um RSS.

Mauricio Junior

Mauricio Junior - Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; . Tenho 29 anos e possuo sete livros publicados pela editora Ciência Moderna e sou editor do Linha de Código.
Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A.
Blog:
blog.mauriciojunior.org
Site pessoal: www.mauriciojunior.org