Update no WebControl RSS

Publicado: 24/08/2004 em IntoSpaces
Olá Pessoal!!!
Depois de algum tempo sem nenhum artigo técnico, estou de volta!

Há alguns dias o meu amigo Fernando Cerqueira postou um código de um WebControl leitor de RSS com um código bem limpo e totalmente funcional!!

Hoje fiz algumas melhorias no controle ,para que possamos tem um pouco mais de flexibilidade com ele, e estou postando aqui para vocês daram uma olhada!

Não vou postar o código todo, então deêm uma olhada no blog dele http://br.thespoke.net/MyBlog/FCerqueira/MyBlog.aspx

ok?

Usei o RSS gerado pelo theSpoke para melhorar o Controle! Vamos lá então

As alterações são bem simples, mas que na hora do desenvolvimento podem fornecer uma funcionalidade a mais para personalizar um leitor de RSS

Foram adicionadas algumas propriedades para armazenar os valores que descrevem o RSS em questão

//–Início das propriedades
private

string title = string.Empty;
private string link = string.Empty;
private string description = string.Empty;
private string copyright = string.Empty;
private string docs = string.Empty;
private DateTime lastbuilddate;
private string generator = string.Empty;
private string webmaster = string.Empty;

[Bindable(true),Category("Info"),DefaultValue(""),Description("Titulo do RSS")]
public string Title
{get{return title;}}

[Bindable(true),Category("Info"),DefaultValue(""),Description("Link para o RSS")]
public string Link
{get{return link;}}

[Bindable(true),Category("Info"),DefaultValue(""),Description("Descricao do RSS")]
public string Description
{get{return description;}}

[Bindable(true),Category("Info"),DefaultValue(""),Description("Copyright do RSS")]
public string Copyright
{get{return copyright;}}

[Bindable(true),Category("Info"),DefaultValue(""),
Description("Data da ultima geração do RSS")]
public DateTime LastBuildDate
{get{return lastbuilddate;}}

[Bindable(true),Category("Info"),DefaultValue(""),Description("Docs para o RSS")]
public string Docs
{get{return docs;}}

[Bindable(true),Category("Info"),DefaultValue(""),Description("Gerador do RSS")]
public string Generator
{get{return generator;}}

[Bindable(true),Category("Info"),DefaultValue(""),Description("Contato do Webmaster")]
public string Webmaster{
get{return webmaster;}}

//–Fim das propriedades

Notem que todas as Propriedades são Read Only, ou seja, somente leitura. Isso faz com que o consumidor do controle não altere os valores referentes à descrição do RSS, quem tem acesso a essas informações é somente o controle.

Os valores são carregados após a execução do método ExecuteRead(), onde o RSS é carregado. Para que isso aconteça faremos uma pequena alteração no método, onde de forma bem simples, utilizando System.Xml.XmlDocument

public void ExecuteRead()
{
if(_UrlRss.Length > 0)
{
   try
   {
        HttpWebRequest WebReq = (HttpWebRequest)(WebRequest.Create(_UrlRss));
        WebResponse WebResp = WebReq.GetResponse();
        Stream Lcstream = WebResp.GetResponseStream();
        XmlTextReader XmlRd = new XmlTextReader(Lcstream);
        XmlRd.XmlResolver = null;

        XmlDocument InfoRss = new XmlDocument();
        InfoRss.Load(XmlRd);
        
         //Cria um nó correspondente ao Channel do RSS
         XmlNode channel = InfoRss.ChildNodes[0].ChildNodes[0];

         //Carrega os valores para as propriedades utilizando os recursos  
         //de coleção do XmlDocument

         title = channel.ChildNodes[0].InnerText;
         link = channel.ChildNodes[1].InnerText;
         description = channel.ChildNodes[2].InnerText;
         copyright = channel.ChildNodes[3].InnerText;
         lastbuilddate = DateTime.Parse(channel.ChildNodes[4].InnerText);
         docs = channel.ChildNodes[5].InnerText;
         generator = channel.ChildNodes[6].InnerText;
         webmaster = channel.ChildNodes[7].InnerText;
         base.Document = InfoRss;
   }
   catch ()
   {
          throw new Exception("Erro ao carregar RSS");
   }
}

if(_UrlXsl.Length > 0)
{
   try
   {
         base.TransformSource = _UrlXsl;
    }
    catch (Exception e)
   {
          throw new Exception("Erro ao tentar transformar o RSS");
    }
}
}

Vejam que as alterações são bem simples, simplesmente foram localizados os campos do RSS referentes às informações do mesmo, e tranformados em informações da nossa classe.
Também foram criadas exceções personalizadas para o controle, onde facilita a identificação do problema ocorrido, porém está bem superficial, somente mostrando o que pode ser feito para se melhorar esse código.

Agora após executarmos o Read do RSS poderemos ter as informações sobre a fonte do RSS, isso pode ser usado para facilitar a construção de um leitor de RSS próprio para a Web.

É isso pessoal, para quem não tem muita intimidade como RSS, procurem estudar um pouco sobre o assunto e verão que vale a pena utilizar esse padrão para disponibilizar informações pela web.

Aguardem por novidades aqui no TheSpoke mesmo sobre RSS!!!

Espero que tenha sido útil para vocês, quem sabe logo não fazemos mais melhorias nessa classe?😉

Grande abraço []

Shinji

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s