Tutorial Flex – XML / E4X

Tutorial Flex – XML / E4X

Trabalhar com xml no flex pode ser uma dor de cabeça, mas usando o chamado E4X é muitoooo facil.

O E4X (ECMAScript for XML) é uma “libraria” adicionada no Action Script 3 para trabalhar nativamente com XML e que têm como principal objectivo simplificar o acesso a ficheiros/conteudo XML. Utilizando o E4X podemos aceder aos items do xml como se fossem objectos no Action Script.

Vi alguns tutoriais pela net, mas ou estão incompletos ou são demasiado complexos… por isso meti mãos à obra e decidi escrever um tutorial para que possam entender melhor de uma forma bem clara e em Português.

Vamos então começar…

Se alguém já trabalhou com xml da forma “normal/antiga” sabe bem como as coisas se podiam complicar, aliás, já eram complicadas por natureza principalmente com os metodos .firstChild e childNodes que em xml’s mais complicados simplesmente era uma confusão trabalhar com eles e detectar erros no código…

Vejamos o seguinte código XML:



Tenis Nike
90


Tenis Puma
Sport fun


Tenis Adidas
AD 215



Isto é um genero simples de um XML, que pode ser representado em actionscript assim:


private var meuXML:XML =Tenis Nike90Tenis PumaSport funTenis AdidasAD 215;

Muito simples até então…

Usando o E4X, podemos mostrar o conteudo do nosso MXL por partes, vejam:

private function mostra():void{
for each(var item in meuXML..artigo){
trace(“Artigo: “+artigo.nome+” do modelo “+artigo.modelo);
}
}
//ou podemos ainda mais simplesmente fazer:
trace(“artigos”+meuXML..artigo.*);

E assim podemos percorrer o nosso XML e listar os items…


Algum exemplos de leitura e procura no XML:
trace(“artigo 1: “+meuXML..artigo[1]);
//lista o nome e modelo em formato xml

trace(“nome artigo 1: ” + meuXML..artigo[1].nome.text());
//lista o conteudo do do primeiro artigo

trace(“modelo artigo 1: “+meuXML.artigo[1].modelo.text());
//lista o conteudo do do primeiro artigo

trace(“id do artigo 1: “+meuXML..artigo[1].@id);
//lista o id=”” do artigo 1

trace(“procurar infos do artigo com id=2″+ meuXML..artigo.(@id==”2″).*);
//lista em formato xml o nome e modelo do artigo 2 efectuando uma procura

trace(“procurar nome do artigo com id=2″+ meuXML..artigo.(@id==”2″).nome.text());
//lista o nome do artigo com id=”2″;

trace(“procurar modelo do artigo com id=2″+ meuXML..artigo.(@id==”2″).modelo.text());
//lista o modelo do artigo com id=”2″;

Muito simples ah?

E pronto, podem ver como é simples trabalhar com xml… vou dar um exemplo de atribuir ao meuXML um ficheiro xml externo:

import flash.net.URLLoader
private var meuXML:XML;
private var loader:URLLoader;

private function carregaXML():void {
loader=new URLLoader();
loader.addEventListener(Event.COMPLETE, onComplete);
loader.load(new URLRequest(“http://www.meusite.com/meu_ficheiro_xml.xml”));
}

private function onComplete(evt:Event):void
{
meuXML = new XML(loader.data);
//e pronto, a pratir de aqui têm o conteudo do xml na variavel e podem usar as operações que indiquei em cima.
}

Para carregar o xml, basta na vossa aplicação flex usar o trigger creationComplete=”carregaXML()”

Como vêm… já não há desculpas para nâo trabalhar com XML usando o E4X!

Espero que seja util

Abraço.


7 comments

add yours
  • […] o método GET do protocolo HTTP. O resultado – que sabemos ser em XML – será tratado pelo E4X, que é uma biblioteca de acesso nativo ao XML. Quando o serviço entrar em ação, o cursor irá […]

  • […] | user-saved public links | iLinkShare 3 votesTitorial Flex – XML / E4X>> saved by humeid 1 days ago3 votes[eactif] AS3 E4X All U need>> saved by interactivar 7 days ago4 […]

  • Hiram Galindo October 4, 2008

    buen ejemplo, aunque deberias poner un link para que puedan bajar el ejemplo y lo puedan probar, nada mejor que la practica.
    salu2.

  • […] by Zackarito on Sat 25-10-2008 10 Reasons We Love Flex Saved by wisenheimer on Sat 25-10-2008 Titorial Flex – XML / E4X Saved by kristenjanell on Fri 24-10-2008 Flex, aprende flex en una semana Saved by HeartofRoxas […]

  • Rafael Franco June 10, 2009

    Valeu cara! Me ajudou bastante este artigo!

  • Phrix November 23, 2009

    Muito bom sua dica, me ajudou muito aqui em um projeto, porém você saberia dizer se tem como excluir um registro do XML usando o E4X ?

    Valeu.

  • Vedovelli July 13, 2010

    Grande amigo, salvando algumas almas aqui por São Paulo. Tutorial ajudou bastante num novo projeto! Abraços!

Leave a Comment

Post