Comunidad de diseño web y desarrollo en internet online

Parsear XML para aplicación en Flash

Citar            
MensajeEscrito el 26 Dic 2008 12:58 pm
Gente amiga de Cristalab. Hace relativamente poco que empiezo a desarrollar en Flash e inmediatamente hice contacto con este foro que es espectacular, cosa que me llevo a registrarme como usuario. Estoy intentando aprender sobre como parsear en Flash XML, tengo mucha bibliografía al respecto, pero sin embargo no doy con la solución. Les pido que me ayuden a continuar con mi problema.
El documento XML es:

Código XML :

<?xml version="1.0" encoding="UTF-8"?>
<meadinkent>
<record>
<mes>10 </mes>
<ao>8 </ao>
<clima_laboral>75 </clima_laboral>
<mermas>1 </mermas>
<market_share>8 </market_share>
<rentabilidad>5 </rentabilidad>
</record>
<record>
<mes>11 </mes>
<ao>8 </ao>
<clima_laboral>51 </clima_laboral>
<mermas>1 </mermas>
<market_share>5 </market_share>
<rentabilidad>5 </rentabilidad>
</record>
<record>
<mes>12 </mes>
<ao>8 </ao>
<clima_laboral>28 </clima_laboral>
<mermas>0 </mermas>
<market_share>5 </market_share>
<rentabilidad>5 </rentabilidad>
</record>
<record>
<mes>1 </mes>
<ao>9 </ao>
<clima_laboral>12 </clima_laboral>
<mermas>0 </mermas>
<market_share>55 </market_share>
<rentabilidad>5 </rentabilidad>
</record>
<record>
<mes>2 </mes>
<ao>9 </ao>
<clima_laboral>23 </clima_laboral>
<mermas>2 </mermas>
<market_share>4 </market_share>
<rentabilidad>6 </rentabilidad>
</record>
<record>
<mes>3 </mes>
<ao>9 </ao>
<clima_laboral>35 </clima_laboral>
<mermas>3 </mermas>
<market_share>5 </market_share>
<rentabilidad>6 </rentabilidad>
</record>
<record>
<mes>4 </mes>
<ao>9 </ao>
<clima_laboral>45 </clima_laboral>
<mermas>4 </mermas>
<market_share>32 </market_share>
<rentabilidad>4 </rentabilidad>
</record>
<record>
<mes>5 </mes>
<ao>9 </ao>
<clima_laboral>12 </clima_laboral>
<mermas>7 </mermas>
<market_share>12 </market_share>
<rentabilidad>7 </rentabilidad>
</record>
<record>
<mes>6 </mes>
<ao>9 </ao>
<clima_laboral>80 </clima_laboral>
<mermas>8 </mermas>
<market_share>1 </market_share>
<rentabilidad>5 </rentabilidad>
</record>
<record>
<mes>7 </mes>
<ao>9 </ao>
<clima_laboral>45 </clima_laboral>
<mermas>10 </mermas>
<market_share>1 </market_share>
<rentabilidad>3 </rentabilidad>
</record>
<record>
<mes>8 </mes>
<ao>9 </ao>
<clima_laboral>12 </clima_laboral>
<mermas>11 </mermas>
<market_share>2 </market_share>
<rentabilidad>1 </rentabilidad>
</record>
</meadinkent>

y el parseo en flash es:

Código ActionScript :

var cmiXML:XML = new XML ();
cmiXML.ignoreWhite = true;
cmiXML.load("cmiXML.xml");
var parsearXML:Function = function(nodo:XML):Array
{
   var datos:Array = [];
   var mes_tmp:Number;
   var anio_tmp:Number;
   var clima_tmp:Number;
   var mermas_tmp:Number;
   var share_tmp:Number;
   var renta_tmp:Number;
   
   for(var i:Number=0; i<nodo.childNodes.length; i++){
      mes_tmp = nodo.childNodes[i].childNodes[0].firstChild.nodeValue;
      anio_tmp = nodo.childNodes[i].childNodes[1].firstChild.nodeValue;
      clima_tmp = nodo.childNodes[i].childNodes[2].firstChild.nodeValue;
      mermas_tmp = nodo.childNodes[i].childNodes[3].firstChild.nodeValue;
      share_tmp = nodo.childNodes[i].childNodes[4].firstChild.nodeValue;
      renta_tmp = nodo.childNodes[i].childNodes[5].firstChild.nodeValue;
      datos.push({mes: mes_tmp, anio: anio_tmp, clima: clima_tmp, mermas: mermas_tmp, share: share_tmp, renta: renta_tmp});
   }
   return datos;
}
var listaTemas:Array = parsearXML(this.firstChild);

alguien me puede decir qué es lo que está mal???. En teoría genera un "Object" con 6 propiedades (mes, anio, clima, mermas, share y renta), pero cuando quiero consultar por algun elemento, la salida me aparece en blanco o "undefinided". Alguien me podría decir si está bien "parseado", y si es así cómo debería consultar el array?.

Desde ya muchas gracias por salvarme de la locura!!!. :D :D :D :D :D

Por Buyido

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Dic 2008 05:50 pm
hola, lo q sucede es que estás llamando (en tu última línea) a tu función parsearXML sin saber si ya cargó o no los datos. Te explico, tu mandas a cargar tu XML e inmediatamente después pides mostrar la información... entonces no funciona porque no existe probablemente en ese momento, agrega onLoad y solucionado:

Código ActionScript :

cmiXML.onLoad = function(){
   var listaTemas:Array = parsearXML(this.firstChild); 
}


Borra tu última línea, porque ya lo vas a llamar desde onLoad

Por eldervaz

BOFH

10964 de clabLevel

39 tutoriales
56 articulos

Genero:Masculino  

en algún lugar del mundo

firefox
Citar            
MensajeEscrito el 31 Dic 2008 11:27 am
Gracias Eldervaz por haberme dedicado tiempo, generalmente uno no lo tiene y menos en estas fechas tan especiales. La verdad es que este tema me trae medio loco, pero bueno... la osmosis todavía no está inventada así que solo me queda la paciencia, el hacha y la tiza.

Seguí tus instrucciones, borré la ultima linea y lo introduje en el "onload". Ahora estoy queriendo consultar los datos y me arroja "undefinided". Yo estimo, por mis escasos conocimientos teóricos, que debería conformarse un array bidimensional. Siguiendo esta linea cuando doy la consulta "trace (listaTemas [0][0]);" tendría que aparecer (en teoría, claro) mi dato consultado... sin embargo, nada.

Ya estoy sumamente agradecido por el dato que me diste... si pudieras ayudarme te lo agradecería aún más!!!..

Que tengas Feliz 2009!.

Por Buyido

1 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.