Ver índice de contenidos del libro

9.2. Lector RSS

9.2.1. Contexto

La sindicación de contenidos mediante protocolos como RSS y Atom ha permitido que los sitios web puedan compartir fácilmente sus noticias, artículos, entradas de blogs y muchos otros contenidos digitales. Aunque RSS es un conjunto de formatos y protocolos, en su forma última es un archivo XML que incluye los contenidos que quiere compartir el servidor web. La sencillez del formato y la posibilidad de procesar archivos XML con JavaScript hacen que RSS sea ideal para desarrollar aplicaciones AJAX que traten con sus contenidos.

9.2.2. Solución propuesta

Ejercicio 21

A partir de la página web que se proporciona, completar el script para realizar un lector avanzado de canales RSS.

1) Al cargar la página, se debe añadir un evento en el botón Mostrar RSS.

2) El script debe mostrar información sobre las operaciones que realiza. Para ello, cada acción que se ejecute debe mostrar un mensaje en el elemento <div id="info"></div> de la página.

3) Al pulsar sobre el botón Mostrar RSS, se ejecuta la función cargarRSS() y se informa al usuario de que se está buscando el canal RSS.

4) La primera tarea que se ejecuta en la función cargarRSS() es la de obtener la URL específica del canal RSS a partir de la URL original de la página HTML. Esta tarea no es sencilla, por lo que es recomendable utilizar el script del servidor llamado descubreRss.php(), que acepta un parámetro llamado url pasado mediante el método GET y devuelve la URL correspondiente al canal RSS.

5) Una vez obtenida la URL del canal RSS, se descarga su contenido. Para obtener los contenidos del canal RSS, es conveniente utilizar un proxy que permita saltarse la restricción de JavaScript para realizar conexiones de red remotas. El script se llama proxy.php y admite dos parámetros GET llamados url (que es la URL que se quiere descargar) y ct (Content-Type del contenido que se está descargando, que es muy importante cuando se quieren recibir contenidos de tipo XML).

6) Después de descargar el contenido del canal RSS, se debe procesar su contenido para obtener cada uno de sus elementos y almacenarlos en un array global llamado canal.

El formato XML resumido de RSS es el siguiente:

<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Ejemplo de canal 2.0</title> 
  <link>http://www.ejemplo_no_real.com</link> 
  <description>Se trata de un ejemplo de canal RSS 2.0, sencillo pero completo</description>
  <item>
    <title>El primer elemento</title> 
    <link>http://www.ejemplo_no_real.com/elementos/001.html</link> 
    <description>Esta es la descripción del primer elemento.</description>
    <pubDate>Sun, 18 Feb 2007 15:04:27 GMT</pubDate>
  </item>
  <item>
    <title>El segundo elemento</title> 
    <link> http://www.ejemplo_no_real.com/elementos/002.html </link> 
    <description> Esta es la descripción del primer elemento.</description>
    <pubDate>Sun, 18 Feb 2007 15:04:27 GMT</pubDate>
  </item>
  ...
  <item>
    <title>El elemento N</title> 
    <link> http://www.ejemplo_no_real.com/elementos/00n.html </link> 
    <description> Esta es la descripción del elemento N.</description>
    <pubDate>Sun, 18 Feb 2007 15:04:27 GMT</pubDate>
  </item>
</channel>
</rss>

El formato del array elementos puede ser cualquiera que permita almacenar para cada elemento su titular, descripción, enlace y fecha de publicación.

7) Una vez descargado y procesado el canal RSS, mostrar sus elementos tal y como se indica en la siguiente imagen:

Aspecto final del lector RSS construido con AJAX

Figura 9.4 Aspecto final del lector RSS construido con AJAX

Al pinchar en cada titular de los que se muestran en la parte izquierda, se carga su contenido completo en la zona central.

Descargar archivo ZIP con la página HTML y los scripts descubreRss.php y proxy.php

Ver solución