Exempel på XML i ActionScript: läsa in RSS-data från InternetFlash Player 9 och senare, Adobe AIR 1.0 och senare Programmet RSSViewer är ett exempel som visar hur du kan arbeta med XML i ActionScript samt hur du:
RSS-formatet är vanligt förekommande för att hämta nyheter via XML. En enkel RSS-datafil kan ha följande utseende: <?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>
I programmet SimpleRSS läses RSS-data från Internet in. Dessa data tolkas för rubriken, länkar och beskrivningar, och därefter returneras dessa data. Klassen SimpleRSSUI ger dig gränssnittet och anropar klassen SimpleRSS där all XML-bearbetning sker. Programfilerna för det här exemplet finns på www.adobe.com/go/learn_programmingAS3samples_flash_se. Du hittar programfiler för RSSViewer i mappen Samples/RSSViewer. Programmet består av följande filer:
Läsa och tolka XML-dataKlassen RSSParser innehåller en xmlLoaded()-metod som konverterar RSS-indata, i variabeln rssXML, som sparas i en sträng som innehåller HTML-formaterade utdata, rssOutput. I början av metoden anger koden standard-XML-namnutrymmet om källans RSS-data innehåller ett standardnamnutrymme: if (rssXML.namespace("") != undefined)
{
default xml namespace = rssXML.namespace("");
}
Nästa rad skapar sedan en slinga genom innehållet för källans XML-data och varje underordnad egenskap med namnet item undersöks: 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);
}
De första tre raderna anger strängvariablerna så att de representerar titel-, beskrivnings- och länkegenskaperna för egenskapen item för XML-datan. Nästa rad anropar metoden buildItemHTML() så att HTML-data hämtas i form av ett XMLList-objekt och för detta används tre nya strängvariabler som parametrar. Samla in XMLList-dataHTML-informationen (ett XMLList-objekt) har följande format: <b>itemTitle</b>
<p>
itemDescription
<br />
<a href="link">
<font color="#008000">More...</font>
</a>
</p>
De första raderna i metoden rensar standard-XML-namnutrymmet: default xml namespace = new Namespace(); Direktivet default xml namespace omfattar funktionens blocknivå. Det innebär att deklarationens omfattning är metoden buildItemHTML(). Med de rader som följer samlas XMLList in utifrån strängargumenten som skickas till funktionen: 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;
Detta XMLList-objekt representerar strängdata och är lämpligt för ett HTML-textfält för ActionScript. Metoden xmlLoaded() använder returvärdet för metoden buildItemHTML() och konverterar det till en sträng: XML.prettyPrinting = false; rssOutput = outXML.toXMLString(); Extrahera titeln för RSS-matningen och skicka en anpassad händelseMetoden xmlLoaded() anger en rssTitle-strängvariabel baserat på informationen i XML-datan för källan: rssTitle = rssXML.channel.title.toString(); Slutligen genererar metoden xmlLoaded() en händelse som meddelar programmet att data har tolkats och är tillgängliga: dataWritten = new Event("dataWritten", true);
|
|