15 Jun

Alimentador RSS en c# validado con W3C

Hay que tener claro:
1º un alimentador RSS es un XML
2º No hay que hacer nada raro para que un lector de RSS lea tu xml simplemente decir que es RSS

Para empezar simplemente he creado un archivo xml, borrar lo que tengáis en el interior y copiad esto:

<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>TITULO</title>

<link>TU PAGINA WEB</link>

//aqui pondremos la direccion del xml

<atom:link href="http://paginaweb/RSSxml.xml" rel="self" type="application/rss+xml" />

<description>DESCRIPICION </description>

<docs>OTRA WEB XD, ESTO ES OPCIONAL</docs>

<generator>GENERADOR DEL RSS POR EJEMPLO TU NOMBRE</generator>

<ttl>60</ttl>

</channel>

</rss>

Una vez hemos copidado el código cerramos el archivo, este archivo no lo tocaremos más manualmente ya que el siguiente método que pondré es el que se encargará de toquetearlo por nosotros. Antes que nada el archivo xml este anterior lo he llamado RSSxml.xml .

Siguiente paso:

Yo en mi caso el método que pondré a continuación lo he llamado desde el insertar_noticias, en mi insertar_noticias.aspx además de recoger los datos para introducirlo en mi base de datos pues también de camino modifico el XML.

Dentro de insertar_noticias tengo varios textbox, pero para insertar en el xml solo utilizaré dos de esos texbox,txtdescripcionnoticia,txtencabezadonoticia. Si os parece en vez de esto podríais utilizar un par de parámetros de tipo STRING.

El código queda talque así, ya está comentado:

public void rssxml()
{ //crea un documento
XmlDocument myXmlDocument = new XmlDocument();
//carga en el docuento creado el archivo que queremos modificar
myXmlDocument.Load(Server.MapPath("RSSxml.xml"));
//creamos un nodo
XmlNode node;
//al nodo le asignamos el nodo raiz del elemento que hemos abierto en este caso es rss
node = myXmlDocument.DocumentElement;
//obtenemos el primer hijo de node en este caso es CHANEL
XmlNode elemento = node.FirstChild;
//creamos un nodo que inicialmente no esta unido con ningún otro image
XmlElement elem = myXmlDocument.CreateElement("item");
XmlElement elemn2 = myXmlDocument.CreateElement("title");
elemn2.InnerText = txtencabezadonoticia.Text;
XmlElement elemn3 = myXmlDocument.CreateElement("link");
elemn3.InnerText = "http://www.clubtorii.somee.com/noticias.aspx";
//insertamos el texto (que hay en la cadena) que queremos que tenga el nodo
XmlElement elemn4 = myXmlDocument.CreateElement("description");
elemn4.InnerText = txtdescripcionnoticia.Text;
XmlElement elemn5 = myXmlDocument.CreateElement("pubDate");
//la r es el tipo de fecha que nos conviene
elemn5.InnerText = DateTime.Now.ToString("r");
//guid es una etiqueta que tendrá que ser única en cada vez que se genere
XmlElement elemn6 = myXmlDocument.CreateElement("guid");
//en este caso pondremos la direccion de la noticia en cuestion
elemn6.InnerText = "http://www.tupagina.com/noticia.aspx?Id=" + (geti.Rows[0] as noticias.NoticiasRow).id.ToString();
//hacemos que los nodos elemn2,3,4 y 5 sean hijos de elem
elem.AppendChild(elemn2);
elem.AppendChild(elemn3);
elem.AppendChild(elemn4);
elem.AppendChild(elemn5);
elem.AppendChild(elemn6);
//hacemos que elem seahijo de elemento que a su vez ya es hijo del nodo principal
elemento.AppendChild(elem);
//cerramos el archivo
myXmlDocument.Save(Server.MapPath("RSSxml.xml"));
}

Ahora solo faltaria que pusiesemos un enlace con el icono de rss en nuestra pagina:

<li>
<a href="RSSxml.xml"><img src="Images/rss.gif" alt="RSS" width="10" height="10" />RSS</a></li>

Share this

Leave a reply