15 set 2008

Como transformar XML em ArrayCollection

As vezes, trabalhar com XML não é melhor solucao para alguns problemas, especialmente onde voce realmente precisa um ArrayCollection para agilizar e simplificar as coisas. Eu tive um problma desse tipo (fazendo alguns testes – tudo naceu de uma zoeira – praticando coisas que nunca fiz), recebendo XML de um web servico e queria transformar isto num arrayCollection. Apos de tempao quebrando cabeca, achei solucao bem simples que quero compartilhar com voces.
Gente sempre deve se liderar com as palavras sabias do mestre Fiyoda – se eh complexo, tah fazendo errado

Usei evento onComplete para meu web service… claro nao precisa nada disso menos um XML e sabendo que tah dentro. Tambem do XML pode saber nome do cada node…
No meu caso, ROOT era “result” e itens foram “record”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        private function onComplete(event:Event):void
        {
            var loader:URLLoader = URLLoader(event.target);
            var xmldoc:XMLDocument = new XMLDocument(loader.data);
            var decoder:SimpleXMLDecoder = new SimpleXMLDecoder(true);
            var obj:Object = new Object();
            var ac:ArrayCollection = new ArrayCollection();
            obj = decoder.decodeXML(xmldoc);

                if (obj.result != null)
                {
                  if (obj.result.record is ArrayCollection) ac = obj.result.record
                  else
                  {
                          ac = new ArrayCollection();
                          ac.addItem(obj.result.record);
                  }
                } else
                        ac=null;
         }

var decoder:SimpleXMLDecoder = new SimpleXMLDecoder(true); foi o que faltava para coisa fica simples. Esta classe tem coisas bonitas e acho que merece ser examinada. Pelo menos pra quem tem que trabalhar com XML.

Comments

  • Rodrigo
    outubro 3, 2008 Responder

    Estou estudando por conta própria flex e action 3 e já vi que aqui tem material de sobra pra estudo.
    Ótimo blog o de vocês, parabesn!

Leave a Comment