La aplicación de ejemplo RSSViewer muestra diversas características del trabajo con XML en ActionScript, incluidas las siguientes:
Se ha extendido el uso del formato RSS para sindicar noticias en formato XML. El aspecto de un archivo de datos RSS simple será similar al siguiente:
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>Alaska - Weather</title>
<link>http://www.nws.noaa.gov/alerts/ak.html</link>
<description>Alaska - Watches, Warnings and Advisories</description>
<item>
<title>
Short Term Forecast - Taiya Inlet, Klondike Highway (Alaska)
</title>
<link>
http://www.nws.noaa.gov/alerts/ak.html#A18.AJKNK.1900
</link>
<description>
Short Term Forecast Issued At: 2005-04-11T19:00:00
Expired At: 2005-04-12T01:00:00 Issuing Weather Forecast Office
Homepage: http://pajk.arh.noaa.gov
</description>
</item>
<item>
<title>
Short Term Forecast - Haines Borough (Alaska)
</title>
<link>
http://www.nws.noaa.gov/alerts/ak.html#AKZ019.AJKNOWAJK.190000
</link>
<description>
Short Term Forecast Issued At: 2005-04-11T19:00:00
Expired At: 2005-04-12T01:00:00 Issuing Weather Forecast Office
Homepage: http://pajk.arh.noaa.gov
</description>
</item>
</channel>
</rss>
La aplicación SimpleRSS lee datos RSS de Internet, analiza dichos datos en busca de titulares (títulos), vínculos y descripciones, y devuelve esos datos. La clase SimpleRSSUI proporciona la interfaz de usuario y llama a la clase SimpleRSS, que lleva a cabo todo el procesamiento de los datos XML.
Para obtener los archivos de la aplicación de este ejemplo, consulte
www.adobe.com/go/learn_programmingAS3samples_flash_es
. Los archivos de la aplicación RSSViewer se encuentran en la carpeta Samples/RSSViewer. La aplicación consta de los siguientes archivos:
Archivo
|
Descripción
|
RSSViewer.mxml
o
RSSViewer.fla
|
El archivo de aplicación principal en Flash (FLA) o Flex (MXML).
|
com/example/programmingas3/rssViewer/RSSParser.as
|
Una clase que contiene métodos que utilizan E4X para atravesar datos RSS (XML) y generan una representación HTML correspondiente.
|
RSSData/ak.rss
|
Un archivo RSS de ejemplo. La aplicación está configurada para leer datos RSS de Internet, en un canal RSS de Flex alojado por Adobe. No obstante, se puede modificar fácilmente para que lea datos RSS de este documento, que utiliza un esquema ligeramente distinto del que utiliza el canal RSS de Flex.
|
Lectura y análisis de datos XML
La clase RSSParser incluye un método
xmlLoaded()
que convierte los datos RSS de entrada, almacenados en la variable
rssXML
, en una cadena que contiene la salida en formato HTML,
rssOutput
.
Casi al principio del método, el código establece el espacio de nombres XML predeterminado si el origen de datos RSS incluye un espacio de nombres predeterminado:
if (rssXML.namespace("") != undefined)
{
default xml namespace = rssXML.namespace("");
}
Las líneas siguientes recorren el contenido del origen de datos XML, examinando cada propiedad descendente denominada
item
:
for each (var item:XML in rssXML..item)
{
var itemTitle:String = item.title.toString();
var itemDescription:String = item.description.toString();
var itemLink:String = item.link.toString();
outXML += buildItemHTML(itemTitle,
itemDescription,
itemLink);
}
Las tres primeras líneas son simplemente un conjunto de variables de cadena para representar las propiedades de título, descripción y vínculo de la propiedad
item
de los datos XML. A continuación, la siguiente línea llama al método
buildItemHTML()
para obtener datos HTML en forma de objeto XMLList, utilizando las tres nuevas variables de cadena como parámetros.
Construcción de datos XMLList
Los datos HTML (un objeto XMLList) tienen la siguiente forma:
<b>itemTitle</b>
<p>
itemDescription
<br />
<a href="link">
<font color="#008000">More...</font>
</a>
</p>
Las primeras líneas del método borran el espacio de nombres XML predeterminado:
default xml namespace = new Namespace();
La directiva
default xml namespace
tiene ámbito de nivel de bloque de función. Esto significa que el ámbito de esta declaración es el método
buildItemHTML()
.
Las líneas siguientes crean el objeto XMLList basándose en los argumentos de cadena pasados a la función:
var body:XMLList = new XMLList();
body += new XML("<b>" + itemTitle + "</b>");
var p:XML = new XML("<p>" + itemDescription + "</p>");
var link:XML = <a></a>;
link.@href = itemLink; // <link href="itemLinkString"></link>
link.font.@color = "#008000";
// <font color="#008000"></font></a>
// 0x008000 = green
link.font = "More...";
p.appendChild(<br/>);
p.appendChild(link);
body += p;
Este objeto XMLList representa una cadena datos adecuada para un campo de texto HTML de ActionScript.
El método
xmlLoaded()
utiliza el valor devuelto por el método
buildItemHTML()
y lo convierte en una cadena:
XML.prettyPrinting = false;
rssOutput = outXML.toXMLString();
Extracción del título del canal RSS y envío de un evento personalizado
El método
xmlLoaded()
establece una variable de cadena
rssTitle
a partir de la información de los datos XML RSS de origen:
rssTitle = rssXML.channel.title.toString();
Por último, el método
xmlLoaded()
genera un evento, que notifica a la aplicación que los datos ha sido analizados y están disponibles:
dataWritten = new Event("dataWritten", true);
|
|
|