XML com multi node

Discuta, aprenda e tire dúvidas sobre o ActionScript 3.

XML com multi node

Mensagempor BBrustol » Qua 02 Set, 2009 8:07 pm

Bem é o seguinte.
Estou precisando ler uma xml com quantidade de nodes diferentes. Vou exemplificar:









                       
         
           
         
           





Como vcs podem perceber eu tenho um node há mais no segundo.
Para ler isso dessa forma eu até sei. Mas eh muito burro.
Eu queria uma forma dinamica de fazer isso.

Imagina um tree Menu. tem alguns que tem mais subpastas que outros. É a mesma a estrutura desse XML.

Nao vou colocar isso num dataGrid ou num list. Vou colocar alguns em comboBox e outros em campos textos. Vai depender do valor da label.

Eu queria alguma forma simples de colocar tudo isso dentro de um array poligonal ou alguma outra forma inteligente.

é isso ai pessoal
Obrigado pela ajuda
[]s

Bruno Brustoloni e Oliveira
BBrustol
Membros
Membros
 
Mensagens: 24
Data de registro: Qui 30 Set, 2004 1:14 pm

Re: XML com multi node

Mensagempor Rutkoski » Qui 03 Set, 2009 10:18 am

Voce pode iterar sobre os filhos de um nó usando for each.

Exemplo:
Código: Selecionar tudo
for each (var node:XML in xml.children()) {
  trace(node.@atributo);
}
Avatar de usuário
Rutkoski
Global Moderator
Global Moderator
 
Mensagens: 1955
Data de registro: Qui 27 Jan, 2005 9:08 am
Localização: Rio Grande do Sul

Re: XML com multi node

Mensagempor BBrustol » Qui 03 Set, 2009 11:48 am

Eu vou continuar com o mesmo problema que eu tinha antes.
Vou ter que falar para ele descer encrementar mais um toda vez

for each (var node:XML in xml.children()) {
  trace(node.@atributo);
}
for each (var node:XML in xml.node.children()) {
  trace(node.@atributo);
}
for each (var node:XML in xml.node.node.children()) {
  trace(node.@atributo);
}

e assim por diante. O problema é exatamente isso. Eu nao sei com quantos nodes ele pode vir. Ele pode vir com 2 ou com 10. E fazer isso na mao é muito burro.
Se tiver uma solução para isso

[]s

Bruno
BBrustol
Membros
Membros
 
Mensagens: 24
Data de registro: Qui 30 Set, 2004 1:14 pm

Re: XML com multi node

Mensagempor Rutkoski » Qui 03 Set, 2009 12:56 pm

Sim, mas daí tu faz uma função (provavelmente recursiva) que é chamada pra cada nó que contenha filhos.
Avatar de usuário
Rutkoski
Global Moderator
Global Moderator
 
Mensagens: 1955
Data de registro: Qui 27 Jan, 2005 9:08 am
Localização: Rio Grande do Sul

Re: XML com multi node

Mensagempor BBrustol » Qui 03 Set, 2009 6:10 pm

Encontrei uma solução não muito legal, mas resolveu o problema. Eu vou tentar fazer de outra forma ainda. Só nao sei como ainda.

[]s

Bruno Brustoloni e Oliveira


Código: Selecionar tudo
var xmlEvento:URLLoader = new URLLoader();
xmlEvento.addEventListener(Event.COMPLETE, fncXMLEventos);
xmlEvento.load(new URLRequest("xml/eventos.xml"));
function fncXMLEventos(e:Event):void {
   XML.ignoreWhitespace = true;
   var xmlEvento1:XML = new XML(e.target.data);
   var arEventos:Array = new Array(xmlEvento1,xmlEvento1.node,xmlEvento1.node.node,xmlEvento1.node.node.node,xmlEvento1.node.node.node.node);
   //xmlEvento3 = new Array(xmlEvento1,xmlEvento1.node,xmlEvento1.node.node,xmlEvento1.node.node.node,xmlEvento1.node.node.node.node);
   var count:uint = 0
   
   for (var i2:Number=0; i2 < arEventos.length; i2++) {
      for each (var node:XML in arEventos[i2].children()) {
         count++
          trace("asdasd - "+count+" "+node.attribute("label"));
      }
      count = 0;
   }
}
BBrustol
Membros
Membros
 
Mensagens: 24
Data de registro: Qui 30 Set, 2004 1:14 pm

Re: XML com multi node

Mensagempor Rutkoski » Qui 03 Set, 2009 6:38 pm

Naaaaaaaaaaaaaaaaaaaaaaaaaaaaaaao!!!!! hehe tá loco

Cara, tu tem q criar uma funcao que faça um for each com cada nó filho de um determinado nó. Se esse nó filho tiver files, chama denovo a mesma funcao pra esse nó.

Código: Selecionar tudo
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, handleLoadComplete);
loader.load(new URLRequest("xml/eventos.xml"));

function handleLoadComplete(e:Event):void {
  parseXml(e.target.data as XML);
}

function parseXml(xml:XML):void {
  if (!xml) return;

  for each (var node:XML in xml.children()) {
    trace(node.@atributo);

    parseXml(node);
  }
}
Avatar de usuário
Rutkoski
Global Moderator
Global Moderator
 
Mensagens: 1955
Data de registro: Qui 27 Jan, 2005 9:08 am
Localização: Rio Grande do Sul

Re: XML com multi node

Mensagempor BBrustol » Qui 03 Set, 2009 6:51 pm

Olha meu amigo
Ficou melhor do que eu esperava. Nada como perguntar. LOL
É o meu segundo projeto em as3.

Valew Cara.

[]s

Bruno Brustoloni e Oliveira

Código: Selecionar tudo
Ficou assim entao o final

var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, fncXMLEventos);
loader.load(new URLRequest("xml/eventos.xml"));

function fncXMLEventos(e:Event):void {
   var xmlEvento1:XML = new XML(e.target.data);
   parseXml(xmlEvento1);
}

function parseXml(xml:XML):void {
   if (!xml) {
      return;
   }
   for each (var node:XML in xml.children()) {
      if (node.attribute("odds")==undefined) {
         trace("SubFolder - "+node.attribute("label"))
      }else{
          trace("info - "+node.attribute("label")+" - "+node.attribute("odds"));
      }
      parseXml(node);
   }
}
BBrustol
Membros
Membros
 
Mensagens: 24
Data de registro: Qui 30 Set, 2004 1:14 pm

Re: XML com multi node

Mensagempor Rutkoski » Qui 03 Set, 2009 6:55 pm

Isso aí, agora pegou a manha :)
Avatar de usuário
Rutkoski
Global Moderator
Global Moderator
 
Mensagens: 1955
Data de registro: Qui 27 Jan, 2005 9:08 am
Localização: Rio Grande do Sul

Re: XML com multi node

Mensagempor fredrabelo » Qui 04 Fev, 2010 3:50 pm

Opa, seguinte. tou com um problema parecido. eu ja consegui ler tudo do xml usando uma funcao parecida com esta.
Estou com problema na representacao. eu ja li como fazer um botao pelo as3. o problema que estou tendo eh;
Como fazer um novo botao para cada nó lido (para cada chamada da funcao), sendo cada um deles em lugar diferente da tela (x,y) para nao sobrepor?
fredrabelo
FM Team 1
FM Team 1
 
Mensagens: 4
Data de registro: Ter 02 Fev, 2010 10:49 pm

Re: XML com multi node

Mensagempor fredrabelo » Sáb 06 Fev, 2010 12:13 am

up
fredrabelo
FM Team 1
FM Team 1
 
Mensagens: 4
Data de registro: Ter 02 Fev, 2010 10:49 pm

Re: XML com multi node

Mensagempor BBrustol » Seg 08 Fev, 2010 10:41 am

fredrabelo escreveu:Opa, seguinte. tou com um problema parecido. eu ja consegui ler tudo do xml usando uma funcao parecida com esta.
Estou com problema na representacao. eu ja li como fazer um botao pelo as3. o problema que estou tendo eh;
Como fazer um novo botao para cada nó lido (para cada chamada da funcao), sendo cada um deles em lugar diferente da tela (x,y) para nao sobrepor?

Para posicionar os botoes ou qualquer obj. Vc vai usar um if simples. Vou colocar um exemplo aqui
Código: Selecionar tudo
var cont:uint = 0;
var posX:number = 0
var posY:number = 0
var entreX:number = 10
var entreY:number = 5
/*
  O if abaixo vai mandar dividir 5 obj por linha caso queira mudar a quantidade de objs por linha é só mudar o 5 para qualquer outro valor que vc queira
*/
if(5%cont){
    posX++;
}else{
   posX = 0;
   posY++
}
/*entre X ou Y = o espaço entre cada obj*/
meuObj.x = entreX + (posX * meuObj.width)
meuObj.y = entreY + (posY * meuObj.height)


Esse codigo vai dentro do for each dessa forma vc vai conseguir posicionar os objs.

Espero que eu tenha ajudado

[]s

Bruno Brustoloni e Oliveira
BBrustol
Membros
Membros
 
Mensagens: 24
Data de registro: Qui 30 Set, 2004 1:14 pm


Retornar para ActionScript 3

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 2 visitantes