Beispiel für XML in ActionScript: Laden von RSS-Daten aus dem InternetFlash Player 9 und höher, Adobe AIR 1.0 und höher In der Beispielanwendung „RSSViewer“ werden mehrere Funktionen für die Verwendung von XML in ActionScript erläutert, einschließlich folgender Funktionen:
Das RSS-Format zum Bereitstellen von Nachrichten per XML ist sehr verbreitet. Es folgt ein Beispiel für eine einfache RSS-Datendatei: <?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>
Die Anwendung „SimpleRSS“ liest RSS-Daten aus dem Internet, strukturiert die Daten nach Schlagzeilen (Überschriften), Links und Beschreibungstexten und gibt diese Daten dann zurück. Mit der SimpleRSSUI-Klasse werden die Benutzeroberfläche bereitgestellt und die SimpleRSS-Klasse aufgerufen, in der die gesamte XML-Verarbeitung erfolgt. Die Anwendungsdateien für dieses Beispiel finden Sie auf www.adobe.com/go/learn_programmingAS3samples_flash_de. Die Dateien der Anwendung „RSSViewer“ befinden sich im Ordner „Samples/RSSViewer“. Die Anwendung umfasst die folgenden Dateien:
Lesen und Strukturieren von XML-DatenDie RSSParser-Klasse enthält die xmlLoaded()-Methode, mit der die in der rssXML-Variablen gespeicherten RSS-Eingabedaten in einen String mit HTML-formatierten Ausgabedaten (rssOutput) konvertiert werden. Am Anfang der Methode wird im Code der XML-Standardnamespace festgelegt, wenn die RSS-Quelldaten einen Standardnamespace enthalten: if (rssXML.namespace("") != undefined)
{
default xml namespace = rssXML.namespace("");
}
In den nächsten Zeilen wird der Inhalt der XML-Quelldaten in einer Schleife durchlaufen. Zudem werden alle Nachfolgereigenschaften mit dem Namen item überprüft. 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);
}
In den ersten drei Zeilen werden einfach nur Stringvariablen für die Titel-, Beschreibungs- und Linkeigenschaften der item-Eigenschaft in den XML-Daten festgelegt. In der nächsten Zeile wird dann die buildItemHTML()-Methode aufgerufen, um HTML-Daten in Form eines XMLList-Objekts abzurufen. Dabei dienen die drei neuen Stringvariablen als Parameter. Zusammenstellen von XMLList-DatenDie HTML-Daten (ein XMLList-Objekt) haben das folgende Format: <b>itemTitle</b>
<p>
itemDescription
<br />
<a href="link">
<font color="#008000">More...</font>
</a>
</p>
In den ersten Zeilen der Methode wird der XML-Standardnamespace gelöscht: default xml namespace = new Namespace(); Der Gültigkeitsbereich der default xml namespace-Direktive ist auf Funktionsblöcke beschränkt. Dies bedeutet, dass der Gültigkeitsbereich dieser Deklaration die buildItemHTML()-Methode ist. In den folgenden Zeilen wird das XMLList-Objekt mithilfe der an die Funktion übergebenen Stringargumente zusammengestellt: 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;
Dieses XMLList-Objekt enthält Stringdaten, die für ein ActionScript-HTML-Textfeld geeignet sind. In der xmlLoaded()-Methode wird der Rückgabewert der buildItemHTML()-Methode in einen String konvertiert: XML.prettyPrinting = false; rssOutput = outXML.toXMLString(); Extrahieren des Titels des RSS-Feeds und Senden eines benutzerdefinierten EreignissesIn der xmlLoaded()-Methode wird anhand der Informationen in den RSS-XML-Quelldaten eine Stringvariable rssTitle festgelegt: rssTitle = rssXML.channel.title.toString(); Die xmlLoaded()-Methode erzeugt schließlich ein Ereignis, durch das die Anwendung darüber benachrichtigt wird, dass die Daten analysiert wurden und nun verfügbar sind: dataWritten = new Event("dataWritten", true);
|
|