4:06 0 0
Crear un RSS con ASP NET en CSHARP

Crear un RSS con ASP NET en CSHARP

  DrUalcman |  abril 302016

Cada día me despierto con alguna idea nueva para mi sitio web, y hoy he podido implementar en cuestión de minutos un Canal RSS. Hoy en día todo sitio WEB que se precie debe de tener un Canal RSS para sus noticias. La idea es poder utilizar luego este canal RSS para una aplicación móvil, por ejemplo.

Primero agradecer al Autor: Dámaso Velázquez Álvarez, de dónde he sacado la información, muy bien explicado y, sobretodo, fácil de implementar.

Paso 1

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:

<%@ Page Language="C" AutoEventWireup="true" CodeFile="rss.aspx.cs" Inherits="rss" %>

Paso 2

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:

public String getCanalRSS()
{
   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");
DataSet dsRSS = new DataSet();
// codigo para rellenar el dataset
   for (int i = 0; i < dsRSS.Tables[0].Rows.Count; i++)
   {
      writer.WriteStartElement("item");
      writer.WriteElementString("title", RemoveIllegalCharacters(dsRSS.Tables[0].Rows[i]["titulo"].ToString()));
      writer.WriteElementString("link", dsRSS.Tables[0].Rows[i]["enlace"].ToString());
      writer.WriteElementString("description", RemoveIllegalCharacters(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();
dsRSS.Dispose();
dsRSS = null;
 
byte[] buffer;
   buffer = ms.ToArray();
   return System.Text.Encoding.UTF8.GetString(buffer);
}

En RSS hay caracteres que debemos sustituir, ya que son incompatibles con la sintaxis del sistema. Para ello utilizaremos este fragmento de código.

 protected string RemoveIllegalCharacters(object input)
{
// cast the input to a string
string data = input.ToString();
// replace illegal characters in XML documents with their entity references
data = data.Replace("&", "&_amp;");
data = data.Replace("\"", "&_quot;");
data = data.Replace("'", "&_apos;");
return data;  //Quitar el _ en &_amp; que en HTML siempre me lo sustituye por el caracter equivalente
}

Paso 3

 Posteriormente programaremos el evento Page_Load del fichero rss.aspx.cs:

protected void Page_Load(object sender, EventArgs e)
{
   //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.

OJO!!!

Necesitaremos incluir al principio del fichero rss.aspx.cs el siguiente código:

using System.Xml;
using System.IO;

Opcional

Podemos insertar el siguiente código html en la cabecera de la página (entre las etiquetas <_head> y <_/head>):

<_ link rel="alternate" type="application/rss+xml" title="Título del canal RSS" href="url del fichero rss.aspx" />

Con esto le indicamos 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. Si trabajas con páginas maestras es recomendable ponerlo en el código de la Master.Page. así todas las páginas tendrán el enlace.
Finalmente en algun lugar de la WEB no te olvides de poner el ícono de que tiene RSS.

Conclusiones

Como habeis podido comprobar sólo son necesarios 3 pasitos para crear tu propio Canal RSS. No os olvideis de cargar el DataSet para adquirir las noticias desde vuestra base de datos.

Happy Coding!!!


#trucos, #RSS

0 Comentarios

 
 
 

Archivo