Como criar um RSS em C#
Para criar um Really Simple Syndication (RSS), é necessário em primeiro lugar escolher um tópico para os conteúdos que vamos publicar e a fonte desses conteúdos, como exemplo, um RSS com as ultimas notícias de trânsito, devemos procurar um site com as informações de trânsito mais actualizadas.
Eu para criar um RSS em C# utilizei uma class library chamada RSS.NET que é open-source e tem tudo o que precisamos para criar um RSS.
Primeiro criamos um novo projecto web e na pagina principal, e colocamos os seguinte código no evento OnLoad da pagina:
WebClient wc = new WebClient(); Stream s = wc.OpenRead("http://www.brisa.pt/Brisa/vPT/Viajar+na+Rede/Transito+Online/?tipo=regiao&idregiao=1"); StreamReader reader = new StreamReader (s);
string str = reader.ReadToEnd ();
Isto serve para retirar o HTML que irá servir de fonte ao nosso RSS. Em seguida criamos uma Regular Expression que irá ler os conteúdos do HTML lido do site:
//Criamos o Canal que alimenta o RSS
RssChannel channel = new RssChannel();
//Criamos uma Regular Expression que irá conter os atributos do nosso RSS
Regex RegexObj = new Regex("<img\\ssrc=’(?<IMGSRC>/PresentationLayer/Resources/Design/vPT/(?<FILE>.*?)\\.gif)’
\\salign=\"left\">\\s*\\t*\\r*\\n*\\r*\\n*<a\\s*[^>]*AEPKSentido\\((?<AE>\\d*),(?<KMINICI
O>\\d*),(?<KMFIM>\\d*),(?<SENTIDO>\\d*)\\)\\s*[^>]*>\\s*\\t*\\r*\\n*\\r*\\n*(?<DESC>
[^<].*?)\\s*\\t*\\r*\\n*\\r*\\n*</a>");
foreach (Match m in RegexObj.Matches(str))
{
RssItem item = new RssItem();
//Criamos um Item e adicionamos os conteudos definidos na regular expression
item.Title = string.Format("Auto Estrada A{0}",m.Groups["AE"].Value);
item.Description = string.Format("<img src=’{0}’> {1}", m.Groups["IMGSRC"].Value, m.Groups["DESC"].Value);
item.Link = new Uri(string.Format("http://www.brisa.pt/BRISA/vPT/Viajar+na+Rede/Transito+Online/?tipo=estrada&idae={0}", m.Groups["AE"].Value)); item.PubDate = DateTime.Now.ToUniversalTime();
//Adicionamos o item ao canal
channel.Items.Add(item);
}
channel.Title = "Transito";
channel.Link = new Uri("http://www.brisa.pt/Brisa/vPT/Viajar+na+Rede/Transito+Online/?tipo=regiao&idregiao=1");channel.Description = "Transito Feed";
RssFeed feed = new RssFeed();
// Por fim assignamos o canal ao alimentador do RSS.
feed.Channels.Add(channel);
// E escrevemos todo o conteúdo do feed para a página.
Response.ContentType = "text/xml";
feed.Write(Response.OutputStream);
Response.End();
Por fim, num software que leia RSS criem uma nova subscrição para o website criado na vossa máquina.