Voorbeeld van XML in ActionScript: RSS-gegevens van internet ladenFlash Player 9 of hoger, Adobe AIR 1.0 of hoger In de voorbeeldtoepassing van RSSViewer worden een aantal kenmerken van werken met XML in ActionScript getoond, inclusief de volgende kenmerken:
De RSS-notatie wordt veelal gebruikt voor het publiceren van nieuws via XML. Een eenvoudig RSS-gegevensbestand kan er als volgt uitzien: <?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> De toepassing SimpleRSS leest RSS-gegevens van internet, parseert de gegevens voor koppen (titels), koppelingen en beschrijvingen en retourneert deze gegevens. De klasse SimpleRSSUI biedt de UI en roept de klasse SimpleRSS aan die volledige XML-verwerking uitvoert. Zie www.adobe.com/go/learn_programmingAS3samples_flash_nl als u de toepassingsbestanden voor dit voorbeeld wilt downloaden. De toepassingsbestanden van RSSViewer vindt u in de map Samples/RSSViewer. De toepassing bestaat uit de volgende bestanden:
XML-gegevens lezen en parserenDe klasse RSSParser bevat een methode xmlLoaded() waarmee de RSS-invoergegevens die zijn opgeslagen in de variabele rssXML, worden omgezet in een tekenreeks met uitvoer die is opgemaakt in HTML, rssOutput. Aan het begin van de methode wordt de standaard XML-naamruimte via de code ingesteld wanneer de RSS-brongegevens een standaardnaamruimte bevatten: if (rssXML.namespace("") != undefined) { default xml namespace = rssXML.namespace(""); } De volgende regels doorlopen de inhoud van de XML-brongegevens en onderzoeken elke afstammende eigenschap met de naam 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); } Met de eerste drie regels worden tekenreeksvariabelen ingesteld voor de weergave van de titel, beschrijving en koppelingseigenschappen van de eigenschap item van de XML-gegevens. Met de volgende regel wordt de methode buildItemHTML() aangeroepen voor het omzetten van HTML-gegevens in een object XMLList met behulp van de drie nieuwe tekenreeksvariabelen als parameters. XMLList-gegevens samenstellenDe HTML-gegevens (een object XMLList) hebben de volgende notatie: <b>itemTitle</b> <p> itemDescription <br /> <a href="link"> <font color="#008000">More...</font> </a> </p> Met de eerste regels van de methode wordt de standaard XML-naamruimte verwijderd: default xml namespace = new Namespace(); De compileraanwijzing default xml namespace heeft een bereik op het niveau van functieblokken. Dit houdt in dat het bereik van deze declaratie de methode buildItemHTML() is. Met de regels die hierna volgen, wordt het XMLList samengesteld op grond van de tekenreeksargumenten die zijn doorgegeven aan de functie: 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; Dit object XMLList vertegenwoordigt tekenreeksgegevens die geschikt zijn voor een HTML-tekstveld van ActionScript. De methode xmlLoaded() maakt gebruik van de geretourneerde waarde van de methode buildItemHTML() en zet deze om in een tekenreeks: XML.prettyPrinting = false; rssOutput = outXML.toXMLString(); De titel van de RSS-feed extraheren en een aangepaste gebeurtenis verzendenMet de methode xmlLoaded() wordt een tekenreeksvariabele rssTitle ingesteld op grond van informatie in de RSS XML-brongegevens: rssTitle = rssXML.channel.title.toString(); Tot slot genereert de methode xmlLoaded() een gebeurtenis die aan de toepassing meldt dat de gegevens zijn geparseerd en dat deze beschikbaar zijn: dataWritten = new Event("dataWritten", true); |
![]() |