Comunidad de diseño web y desarrollo en internet online

Lector de feeds RSS en Actionscript 3 con Flash CS3

En este Tip veremos cómo podemos crear un Lector de RSS con Flash CS3. Tengan en cuenta que es un ejemplo básico, que pueden extender haciendo uso de clases (que permitan, por ejemplo, modificar los estilos).

Anteriormente Zah ya publicó otro tip sobre un lector de RSS en Flex 2 en Actionscript 3, en el que se explica la sintaxis E4X de ActionScript 3 (que también utilizo en este tip).

Antes que nada cabe mencionar que este lector fue creado utilizando como base RSS 2.0 y no ha sido probado en versiones anteriores, por lo que puede haber errores.

El código es el siguiente:

Código :

function readRSS(feedURL:String, outputField:TextArea):void
{
   var feedLoader:URLLoader = new URLLoader();
   
   feedLoader.addEventListener(Event.COMPLETE, parseFeed);
   feedLoader.load(new URLRequest(feedURL));
}

Esta función es la principal y se encargará de crear un Objeto URLLoader que cargará la URL del Feed, también especifica que al completarse la carga se llamará a la función parseFeed, que es la que analizará y procesará el Feed.
Tiene dos parámetros, el primero es la URL del feed a leer y el segundo el objeto que contendrá los datos, he colocado como tipo de datos un componente TextArea pero de igual forma puedes modificarlo para colocar un TextField.

Código :

function parseFeed(event:Event):void
{
   var feedXML:XML = new XML(event.target.data);
   
   var mainTitle:String = feedXML.channel.title;
   var mainLink:String = feedXML.channel.link;
   var mainDescription:String = feedXML.channel.description;
   
   outputField.htmlText = "<a href='" + mainLink + "'>" + "<b>" + "<font color = '#006699' size = '14'>" + mainTitle + "</font>" + "</b>" + "</a>";
   outputField.htmlText += "<font color = '#006699'>" + mainDescription + "</font>";
   outputField.htmlText += "<p></p>";
   
   for each(var item:XML in feedXML..item)
   {
      var itemTitle:String = item.title.toString();
      var itemDescription:String = item.description.toString();
      var itemLink:String = item.link.toString();
      
      var rssContent:XMLList = new XMLList();
      
      rssContent += toHtml(itemTitle, itemDescription, itemLink);
      
      XML.prettyPrinting = false;
      
      outputField.htmlText += rssContent.toXMLString();
   }
}

Esta función crea el Objeto XML así como las variables que guardarán los valores de los elementos del Feed que posteriormente les serán asignadas etiquetas HTML para aparecer correctamente en el campo de texto. Puedes modificar las etiquetas a tu gusto.
Después utilizamos un for..each..in para tomar los valores de cada item del RSS, y llamamos a la función que convertirá en HTML esos valores.
Por último asignamos el contenido al campo de texto como un XMLString.

Esta es la función que etiquetará los valores de cada item:

Código :

function toHtml(itemTitle, itemDescription, itemLink):XMLList
{
   var output:XMLList = new XMLList();
   
   output += new XML("<font color = '#006699'>" + "<a href='" + itemLink + "'>" + "<b>" + itemTitle + "</b>" + "</a>" + "</font>");
   output += new XML("<br>" + "<p>" + itemDescription + "</p>" + "</br>");
   output += new XML("<p></p>");
   
   return output;
}

Simplemente se crea un Objeto XMLList para manejar los XML a los que se le añaden las etiquetas.

Para llamar la función haremos esto:

Código :

readRSS("URLdelFeed", ObjetoQueContendraLosDatos);


Por ejemplo:

Código :

readRSS("http://www.cristalab.com/rss.php", outputField);

Nos da como resultado:

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro

Entra al foro y participa en la discusión

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate