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