Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. ASP.NET
Code

Cómo construir una fuente RSS con ASP.NET

by
Length:LongLanguages:

Spanish (Español) translation by Ana Paulina Figueroa Vazquez (you can also view the original English article)

En el transcurso de este tutorial, repasaremos cómo crear una fuente RSS con el framework ASP.NET. Tener una fuente RSS para tu sitio se ha convertido en una necesidad en los últimos años. Con blogs o sitios de noticias que se actualizan frecuentemente, y con la gran cantidad de blogs y sitios web de noticias existentes, RSS ha permitido a los lectores mantenerse al día con respecto al nuevo contenido sin ser obligados a visitarlo. Una vez que hayas terminado este tutorial, sabrás cómo crear una fuente RSS con ASP.NET y cómo presentar documentos XML en páginas web ASP.NET.


Paso 0: Introducción a RSS 2.0

RSS es un formato de sindicación de contenido web. Significa "Really Simple Syndication", o "Sindicación Realmente Simple", y está escrito en XML. Todos los archivos RSS deben cumplir con la especificación XML 1.0, según lo publicado por el World Wide Web Consortium (W3C). Con RSS es posible distribuir contenido web actualizado desde un sitio web a miles de otros sitios en todo el mundo. Para simplificar el término, RSS permite una búsqueda rápida de noticias y actualizaciones.

Las reglas de sintaxis de RSS 2.0 son bastante simples, aunque estrictas. Este es un documento RSS sencillo:

La primera línea del documento (la declaración XML) define la versión XML y la codificación de caracteres usada en el documento. En este caso, el documento cumple con la especificación 1.0 de XML y usa el conjunto de caracteres utf-8. La siguiente línea es la declaración RSS, que identifica que este es, de hecho, un documento RSS (más específicamente, RSS versión 2.0).

La siguiente línea contiene el elemento <channel>. Este elemento se usa para describir la fuente RSS. El elemento <channel> tiene tres elementos hijos obligatorios:

  • <title> - Define el título del canal (por ejemplo, el nombre de tu sitio web)
  • <link> - Define el hipervínculo al canal (por ejemplo, http://www.tudominio.com)
  • <description> - Describe al canal (por ejemplo, Tutorial de RSS Gratuito)

Cada elemento <channel> puede tener uno o más elementos <item>. Cada elemento <item> define un artículo o "historia" dentro de la fuente RSS.

El elemento <item> requiere tres elementos hijos:

  • <title> - Define el título del item (por ejemplo Primer Artículo)
  • <link> - Define el hipervínculo al item (por ejemplo, http://www.tudominio.com/articulo.aspx?ID=1)
  • <description> - Describe al item (por ejemplo, La descripción del primer artículo)

Al desplegarse en Firefox, el documento RSS anterior debería verse similar a:

RSS document

Paso 1: Comenzando

Para seguir este tutorial, imagina que trabajas como desarrollador web y que estás construyendo un sitio web de noticias en el que todas las historias se almacenan en una base de datos SQL Server de Microsoft. Específicamente, los artículos son almacenados en una tabla llamada News, que contiene los siguientes campos:

  • ArticleID - un campo entero de clave primaria autoincremental que identifica a cada artículo de forma única
  • Title - un nvarchar(256), que especifica el título del artículo
  • Author - un nvarchar(50) que especifica al autor del artículo
  • Description - un nvarchar(500) que proporciona una descripción más profunda del artículo
  • DatePublished - un datetime que indica la fecha en la que el artículo fue publicado

Toma en cuenta que pueden haber otros campos en la tabla News, pero aquellos listados anteriormente son los únicos que estamos interesados en usar, al menos para los fines de una fuente RSS.

Usaremos Visual Studio para terminar el ejemplo. Si no tienes la versión completa de VS, puedes conseguir la Edición Express gratuita.


Paso 2: Creando una página rss.aspx

Nuestro siguiente paso es crear una página web ASP.NET (rss.aspx) que mostrará una lista de las noticias más recientes como un documento RSS 2.0 con el formato apropiado. En el Solution Explorer (Explorador de Soluciones), haz clic con el botón derecho en el nombre del proyecto y luego haz clic en Add New Item (Añadir Nuevo Elemento). En este cuadro de diálogo, dentro de las plantillas de Visual Studio instaladas, haz clic en Web Form (Formulario Web).

Add New Page

El el cuadro Name (Nombre) escribe un nombre para la nueva página web (rss.aspx), y luego haz clic en Add (Añadir). La nueva página web ASP.NET (rss.aspx) será creada y mostrada en consecuencia.

Ya que queremos que la página rss.aspx genere una salida XML, lo primero que debemos hacer es eliminar todo el marcado HTML o los controles web de la página, y luego asignar el valor "text/xml" a la propiedad ContentType de la directiva @page.

Después de eliminar todo el marcado HTML de la página rss.aspx, agrega un control Repeater a la página. Usaremos el control Repeater para mostrar un documento RSS en la página rss.aspx.

Esta es la vista del código fuente de la página rss.aspx después de haber hecho algunos cambios:


Paso 3: Configurando la cadena de conexión

A continuación queremos configurar la cadena de conexión de la fuente de datos dentro del archivo Web.config. Si guardamos la información de la cadena de conexión podemos evitar codificarla de forma estática en el archivo de código subyacente. Esto simplifica las cosas si la información de la cadena de conexión cambia en el futuro. Colócala en la sección <connectionStrings> dentro de configuration element (elemento de configuración), de esta forma:

Vamos a acceder a esta información desde el archivo de código subyacente más adelante, cuando queramos obtener información de la base de datos.


Paso 4: Eliminando caracteres no permitidos del documento XML

Algunos caracteres tienen un significado especial en XML. Si colocas un carácter como "<" dentro de un elemento XML, éste generará un error, ya que el analizador lo interpreta como el inicio de un nuevo elemento. Para evitar este error reemplaza el carácter "<" con su referencia de entidad (&lt;).

Existen cinco referencias de entidades predefinidas en XML:

&lt; < menor que
&gt; > mayor que
&amp; & ampersand
&apos; ' apóstrofe
&quot; " comillas

Para evitar que nuestra fuente RSS genere un error, tenemos que reemplazar todos los caracteres ilegales de un documento RSS por sus referencias de entidades. Agrega el siguiente código al archivo de código subyacente de la página rss.aspx (rss.aspx.cs):

La función RemoveIllegalCharacters() ejecuta algunos reemplazos de cadena simples, si es necesario. Invocaremos a esta función desde la página rss.aspx muy pronto.


Paso 5: Obteniendo información de la base de datos

Agrega el siguiente código al manejador de eventos Page_Load:

El código anterior intentará obtener los diez elementos de noticias más recientes de tu base de datos. A continuación los vinculará a un control Repeater (RepeaterRSS) cuando la página sea cargada.


Paso 6: Mostrando la información

Este es nuestro último paso. Es hora de mostrar los elementos de la tabla News en un archivo de sindicación RSS 2.0 apropiado. La manera más simple y rápida de mostrar la información de la base de datos como XML es usando un control Repeater (RepeaterRSS). Específicamente, el Repeater mostrará las etiquetas <rss>, <channel> y los elementos relacionados con el sitio web en sus plantillas HeaderTemplate y FooterTemplate, y los elementos <item> en la plantilla ItemTemplate. No olvides invocar a la función de ayuda RemoveIllegalCharacters() para reemplazar caracteres no deseados de la cadena de salida.

Lo siguiente es la porción HTML de nuestra página web ASP.NET (rss.aspx):

Lo primero que vale la pena observar aquí es que el archivo rss.aspx anterior contiene solamente el control Repeater (RepeaterRSS) y ningún otro marcado HTML ni controles web. Esto se debe a que queremos que la página genere únicamente una salida XML. Configuramos el ContentType de la directiva @Page con el valor "text/xml" para indicar que la salida de la página rss.aspx es un documento XML.

En la plantilla HeaderTemplate del control Repeater colocamos los elementos <rss> y <channel>.

A continuación, en ItemTemplate colocamos los elementos <item>, que contienen a los elementos <title>, <link>, <author>, <pubDate> y <description>, como ubicación para los campos de la base de datos. Invocamos a la función RemoveIllegalCharacters() al añadir los campos Title, Author y Description de la base de datos a la salida XML. Recuerda, esta función simplemente reemplaza cualquier carácter XML no permitido por sus referencias de entidades.

Finalmente, el campo DatePublished de la base de datos, introducido en el elemento <pubDate>, recibe un formato usando el método String.Format. El especificador de formato estándar, R, le da formato al valor DatePublished de forma apropiada de acuerdo a la Especificación de Fecha y Hora, RFC 822. Este formato comienza con una abreviatura para el día opcional de tres letras y una coma, seguida por un día obligatorio, el mes abreviado con tres letras y luego el año, seguido por una hora con el nombre de la zona horaria, por ejemplo Jue, 04 Nov 2010 20:50:26 GMT.


El resultado

¡Y aquí lo tenemos!. Con un esfuerzo mínimo hemos creado una fuente RSS personalizada para una aplicación ASP.NET.

The Resulting Feed

El código completo

El archivo rss.aspx.

El archivo rss.aspx.cs.

El archivo Web.config.


Conclusión

Crear una fuente RSS con ASP.NET es muy sencillo, ¿no es así?. Solamente necesitamos comprender la especificación RSS 2.0. Más allá de eso, mediante el uso del control Repeater de .NET podemos mostrar elementos a partir de una base de datos en el documento RSS. La mayoría de los sistemas de gestión de contenido tendrán esta capacidad de forma predeterminada. Sin embargo, si eres un desarrollador y estás creando un sitio web ASP.NET desde cero, ahora tienes la habilidad de construir tu propia fuente personalizada.

¡Que disfrutes codificando!.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.