Esempio di XML in ActionScript: Caricamento di dati RSS da InternetFlash 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:
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:
Lettura e analisi dei dati XMLLa 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 XMLListI 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 personalizzatoIl 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);
|
|