Esempio di XML in ActionScript: caricamento di dati RSS da Internet

Flash Player 9 e versioni successive, Adobe AIR 1.0 e versioni successive

L'applicazione di esempio RSSViewer dimostra come usare varie funzioni per manipolare dati XML in ActionScript, tra cui:

  • Usare i metodi XML per leggere i dati XML sotto forma di feed RSS.

  • Usare i metodi XML per assemblare i dati XML in formato HTML utilizzabile in campi di testo.

Il formato RSS è ampiamente utilizzato per raccogliere notizie tramite XML. Un file di dati RSS semplice ha un aspetto simile al seguente:

<?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>

L'applicazione SimpleRSS legge i dati RSS da Internet, li analizza per individuare i titoli, i collegamenti e le descrizioni, quindi restituisce i dati. La classe SimpleRSSUI costituisce l'interfaccia utente e chiama la classe SimpleRSS, che si occupa dell'elaborazione XML.

Per ottenere i file dell'applicazione per questo esempio, visitate la pagina www.adobe.com/go/learn_programmingAS3samples_flash_it. I file dell'applicazione RSSViewer si trovano nella cartella Samples/RSSViewer. L'applicazione è composta dai seguenti file:

File

Descrizione

RSSViewer.mxml

o

RSSViewer.fla

Il file principale dell'applicazione in Flash (FLA) o Flex (MXML)

com/example/programmingas3/rssViewer/RSSParser.as

Classe che contiene metodi che usano E4X per leggere i dati RSS (XML) e generare la rappresentazione HTML corrispondente.

RSSData/ak.rss

File RSS di esempio. L'applicazione è configurata in modo da leggere i dati RSS dal Web, presso un feed RSS Flex residente sul sito Adobe. In alternativa, non presenta difficoltà impostare l'applicazione in modo che legga i dati RSS da questo documento, che usa uno schema leggermente diverso rispetto a quello del feed RSS Flex.

Lettura e analisi dei dati XML

La classe RSSParser comprende il metodo xmlLoaded() che converte i dati RSS di input, memorizzati nella variabile rssXML, in una stringa che contiene dati in formato HTML, rssOutput.

Verso l'inizio del metodo, il codice indica lo spazio dei nomi XML predefinito se i dati RSS di origine comprendono uno spazio dei nomi predefinito:

if (rssXML.namespace("") != undefined) 
{ 
    default xml namespace = rssXML.namespace(""); 
}

Le righe seguenti eseguono un ciclo tra il contenuto dei dati XML di origine ed esaminano tutte le proprietà discendenti denominate 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); 
}

Le prime tre righe si limitano a impostare le variabili stringa che rappresentano le proprietà del titolo, della descrizione e del collegamento della proprietà item dei dati XML. La riga seguente chiama il metodo buildItemHTML() per ottenere i dati HTML sotto forma di oggetto XMLList, usando le tre nuove variabili come parametri.

Assemblaggio dei dati XMLList

I dati HTML (l'oggetto XMLList) hanno il seguente formato:

<b>itemTitle</b> 
<p> 
    itemDescription 
    <br /> 
    <a href="link"> 
        <font color="#008000">More...</font> 
    </a> 
</p>

Le prime righe del metodo eliminano lo spazio dei nomi xml predefinito:

default xml namespace = new Namespace();

La direttiva default xml namespace ha un'area di validità a livello di blocco della funzione. Ciò significa che l'area di validità di questa dichiarazione è il metodo buildItemHTML().

Le righe di codice che seguono assemblano l'oggetto XMLList basandosi sugli argomenti String passati alla funzione:

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;

Questo oggetto XMLList rappresenta dei dati in formato stringa adatti a un campo di testo HTML di ActionScript.

Il metodo xmlLoaded() usa il valore restituito dal metodo buildItemHTML() e lo converte in stringa:

XML.prettyPrinting = false; 
rssOutput = outXML.toXMLString();    

Estrazione del titolo del feed RSS e invio di un evento personalizzato

Il metodo xmlLoaded() imposta una variabile di stringa rssTitle basandosi sulle informazioni dei dati XML del feed RSS di origine:

rssTitle = rssXML.channel.title.toString();

Infine, il metodo xmlLoaded() genera un evento che notifica l'applicazione che i dati sono stati analizzati e sono disponibili:

            dataWritten = new Event("dataWritten", true);