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 de aplicativo desse 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:
Arquivo
|
Descrição
|
RSSViewer.mxml
ou
RSSViewer.fla
|
O arquivo principal do aplicativo no Flash (FLA) ou no Flex (MXML).
|
com/example/programmingas3/rssViewer/RSSParser.as
|
Uma classe que contém métodos que usam o E4X para percorrer dados RSS (XML) e gerar uma representação em HTML correspondente.
|
RSSData/ak.rss
|
Um arquivo RSS de exemplo. O aplicativo é configurado para ler dados RSS na Web, em um feed RSS do Flex hospedado pela Adobe. No entanto, você pode alterar o arquivo com facilidade para ler dados RSS neste documento, que usa um esquema ligeiramente diferente do feed RSS do Flex.
|
Leitura e análise de dados XML
A 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 XMLList
Os 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 personalizado
O 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);
|
|
|