En este artículo vamos a ver cómo crear un canal RSS en C#. Lo primero va a ser crear un archivo .aspx que llamaremos rss.aspx, por ejemplo.
Vamos a generar el código XML del fichero rss.aspx de manera dinámica, en tiempo de ejecución. Para ello tenemos que implementar el fichero rss.aspx de la siguiente forma.
El código html que va a tener el fichero será el siguiente:
Supongamos que tenemos un objeto de la clase DataSet llamado dsRSS que hemos rellenado con la información relativa a los artículos que queremos ofrecer vía RSS. El DataSet estará formado por cuatro columnas: titulo, enlace, vista_previa y fecha. A partir de esos datos rellenaremos nuestro canal RSS.
Crearemos un método que genere el contenido RSS en XML (el código XML será devuelto como String) de la siguiente forma:
{
MemoryStream ms = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(ms, System.Text.Encoding.UTF8);
writer.WriteStartDocument();
writer.WriteStartElement(«rss»);
writer.WriteAttributeString(«version», «2.0»);
writer.WriteStartElement(«channel»);
writer.WriteElementString(«description», «Canal RSS de ejemplo»);
writer.WriteElementString(«link», «Dirección del sitio web»);
writer.WriteElementString(«title», «Título del canal RSS»);
for (int i = 0; i < dsRSS.Tables[0].Rows.Count; i++)
{
writer.WriteStartElement(«item»);
writer.WriteElementString(«title», dsRSS.Tables[0].Rows[i][«titulo»].ToString());
writer.WriteElementString(«link», dsRSS.Tables[0].Rows[i][«enlace»].ToString());
writer.WriteElementString(«description», dsRSS.Tables[0].Rows[i][«vista_previa»].ToString());
writer.WriteElementString(«pubDate», DateTime.Parse(dsRSS.Tables[0].Rows[i][«fecha»].ToString()).ToString(«R»));
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.WriteEndElement();
writer.Flush();
byte[] buffer;
buffer = ms.ToArray();
return System.Text.Encoding.UTF8.GetString(buffer);
}
Posteriormente programaremos el evento Page_Load del fichero rss.aspx.cs:
{
//Rellenaremos el contenido del DataSet dsRSS en este punto
//para utilizarlo en la llamada al método getCanalRSS que haremos posteriormente
Response.ContentType = «text/xml»;
Response.Write(this.getCanalRSS(dsRSS));
}
El DataSet dsRSS tendrá que ser rellenado al comienzo del evento Page_Load con el contenido del canal RSS. Lo habitual será rellenarlo mediante una consulta a la base de datos, con los últimos registros.
Necesitaremos incluir al principio del fichero rss.aspx.cs el siguiente código:
using System.IO;
Podemos insertar el siguiente código html en la cabecera de la página (entre las etiquetas <head> y </head>):
para indicarle al navegador que nuestro sitio web tiene canales RSS. Así cuando el usuario esté viendo la web, sabrá si hay canales RSS en dicha web.