Pregunta

Estoy buscando una manera eficiente y reutilizable para analizar XML en un objeto en ActionScript2. La estructura XML en sí podría cambiar por lo que es importante que im capaz de analizar el código XML con fuera 'de codificación dura' nodos específicos, etc.

Yo normalmente utilizo AS3 y no necesitaría algo como esto ya que la clase XML es fácil de profundizar en. A continuación se muestra el pseudocódigo AS3 de lo que estoy tratando de lograr.

    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;
    }

Gracias de antemano por cualquier ayuda en esto!

¿Fue útil?

Solución

i no entendía completamente su pseudo código ... ¿qué ocurre con la matriz values? parece ser simplemente descartados ... También, no parece ser recursivo ...

El problema es, que la semántica de XML y ECMA-objetos es diferente ...

¿qué asignar este a?

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

y, a continuación, lo que sería esto?

<cart><item /><cart>

y lo que esto?

<cart />

El problema es, que en el primer caso, tiene una matriz, en la segunda una propiedad, en el tercer nada ... por lo que no se puede saber, lo cart.item habrá ... incluso si usted dice, que solo los nodos secundarios serán envueltos en una matriz, que aún se podía tiene ninguna entrada, y por lo tanto es cart.item null ... no es que AS2 se quejaría si accede a las propiedades de null pero aún así, esto es bastante uggly ...

e4x parece ser la mejor manera de atravesar objetos XML de un mundo ECMA ... después de un poco de pensamiento, he juntado una pequeña biblioteca (bastante hacky): http: // código .google.com / p / as24x / se pueden encontrar otras bibliotecas en Google sin embargo, que soportan más características ... es más bien acerca de la sintaxis ...

Espero que esta ayuda;)

greetz

back2dos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top