Recursivamente analisar XML em ActionScript 2

votos
1

Eu estou procurando uma maneira eficiente e reutilizável para analisar xml em um objeto em ActionScript2. A estrutura xml em si pode mudar por isso é importante que im capaz de analisar o XML com o 'hard coding' nós específicos, etc.

Eu normalmente uso As3 e não precisaria de algo assim desde a classe XML é fácil de detalhar. Abaixo está AS3 pseudocódigo do que estou tentando realizar.

    public function XmlObject(myXmlObject:XML,_node:String):Object
    {
        var xmlObj:Object=new Object();

        for(var node:uint=0;node<myXmlObject[_node].children().length();node++)
        {
            var attributesList:XMLList=myXmlObject[_node].children()[node].attributes();
            var nodeName:String=myXmlObject[_node].children()[node].name(); 

            switch(attributesList.length()>1)
            {
                //////////////////////
                case false:
                //////////////////////
                {
                  for each(var attribute:XML in attributesList)
                  { 
                    xmlObj[nodeName]=attribute;
                  } 
                break;


                //////////////////////
                case true:
                //////////////////////
                var values:Array=[];
                for each(attribute in attributesList)
                {
                    values.push(attribute);
                    xmlObj[nodeName][String(attribute.name())]=attribute;
                }   
                break;
            }
        }
    return xmlObj;
    }

Agradeço desde já toda a ajuda nisto!

Publicado 19/05/2009 em 18:38
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

eu não entendia completamente seu código pseudo ... o que acontece com a matriz values? parece ser simplesmente descartados ... também, não parece ser recursiva ...

o problema é que a semântica de XML e ECMA-objetos é diferente ...

o que você mapear isso?

<cart><item /><item /></cart>

e então, o que seria isso?

<cart><item /><cart>

eo que isso?

<cart />

o problema é que, no primeiro caso, você tem um array, no segundo uma propriedade, no terceiro nada ... então você não pode saber, o que cart.itemserá ... mesmo se você dizer, que nós filho único será envolvido em uma matriz, você ainda pode ter nenhuma entrada, e, portanto, cart.itemé null... não que as2 iria reclamar se você acessar as propriedades de nullmas ainda assim, isso é muito uggly ...

e4x parece ser a melhor maneira de atravessar objetos XML a partir de um mundo ECMA ... depois de um pouco de pensamento, eu coloquei uma pequena biblioteca (bastante hacky): http://code.google.com/p/as24x/ você pode encontrar outras bibliotecas no google, porém, que suportam mais recursos ... é sim sobre sintaxe ...

espero que isto ajude ;)

greetz

back2dos

Respondeu 03/06/2009 em 17:46
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more