Exemplo XML no ActionScript: carregamento de dados RSS da WebFlash Player 9 e posterior, Adobe AIR 1.0 e posterior O aplicativo de exemplo RSSViewer mostra diversos recursos para trabalhar com XML no ActionScript, incluindo os seguintes:
O formato RSS é muito utilizado para distribuir notícias via XML. Um arquivo de dados RSS simples pode ser parecido com o seguinte: <?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> O aplicativo SimpleRSS lê os dados RSS na Internet, analisa os dados em busca de cabeçalhos (títulos), links e descrições e retorna esses dados. A classe SimpleRSSUI fornece a interface de usuário e chama a classe SimpleRSS, que faz todo o processamento XML. Para obter os arquivos do aplicativo para este exemplo, consulte www.adobe.com/go/learn_programmingAS3samples_flash_br. Os arquivos do aplicativo RSSViewer estão localizados na pasta Amostras/RSSViewer. O aplicativo consiste nos seguintes arquivos:
Leitura e análise de dados XMLA classe RSSParser inclui um método xmlLoaded() que converte os dados RSS de entrada, armazenados na variável rssXML, em uma string que contém a saída em formato HTML, rssOutput. Logo do início do método, o código define o namespace XML padrão se os dados RSS de origem incluírem um namespace padrão: if (rssXML.namespace("") != undefined) { default xml namespace = rssXML.namespace(""); } As próximas linhas percorrem o conteúdo dos dados XML de origem, examinando cada propriedade de descendente chamada 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); } As três primeiras linhas simplesmente definem variáveis de string para representar as propriedades de título, descrição e link da propriedade item dos dados XML. Em seguida, a próxima linha chama o método buildItemHTML() para obter os dados HTML em forma de um objeto XMLList, usando as três novas variáveis de string como parâmetros. Montagem de dados XMLListOs dados HTML (um objeto XMLList) têm uma das seguintes formas: <b>itemTitle</b> <p> itemDescription <br /> <a href="link"> <font color="#008000">More...</font> </a> </p> As primeiras linhas do método apagam o namespace XML padrão: default xml namespace = new Namespace(); A diretiva de namespace XML padrão tem o escopo do nível de bloqueio da função. Isso significa que os escopo dessa instrução é o método buildItemHTML(). As próximas linhas montam o XMLList, com base nos argumentos de string transmitidos para a função: 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; Esse objeto XMLList representa dados de string adequados para um campo de texto HTML do ActionScript. O método xmlLoaded() usa o valor de retorno do método buildItemHTML() e o converte em uma string: XML.prettyPrinting = false; rssOutput = outXML.toXMLString(); Extração do título do feed RSS e envio de um evento personalizadoO método xmlLoaded() define uma variável de string rssTitle, com base nas informações dos dados XML RSS de origem: rssTitle = rssXML.channel.title.toString(); Finalmente, o método xmlLoaded() gera um evento, que informa ao aplicativo que os dados estão analisados e disponíveis: dataWritten = new Event("dataWritten", true); |
![]() |