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);