Comunidad de diseño web y desarrollo en internet online

xml to Array

Citar            
MensajeEscrito el 30 Jun 2010 04:10 pm
Gente, increiblemente siento que volvi a enroscarme con cosas que crei que ya tenia resueltas.
queria saber si alguno sabe como convertir xml en un dato array...

les paso los ejemplos:

tengo este cofigo que carga de manera simple un XML.

Código ActionScript :

cargaXML = new XML();
cargaXML.load("gracias.xml");
cargaXML.onLoad = dameDatos;
cargaXML.ignoreWhite = true;


function dameDatos() {
   for (var i = 0; i<cargaXML.childNodes.length; i++) {
         var nombre_arr:Array = cargaXML.firstChild.childNodes[i].attributes.nombre;
         trace (nombre_arr);
      }
}


/*

<gracias>
   <persona nombre="Diego" motivo="Gracias por Todo lo que haces1">
   <persona nombre="Santiago" motivo="Gracias por Todo lo que haces2">
   <persona nombre="Veronica" motivo="Gracias por Todo lo que haces3">
   <persona nombre="Julieta" motivo="Gracias por Todo lo que haces4">
   <persona nombre="Luciana" motivo="Gracias por Todo lo que haces5">
   <persona nombre="Graciela" motivo="Gracias por Todo lo que haces6">
</gracias>

*/


y quiero convertir esos datos XML es decir TODO EL XML
en un Array de este tipo:

var gente_array = new Array (["Diego","Gracias por 1"],["Marco","Gracias por 2"],["Lucas","Gracias por 3"]);

como deberia de ser el "for" a recorrer o como deberia de armar los array o variables.. etc etc..
gracias desde ya
saludos

Por di3

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Jun 2010 06:52 pm
Hola,
en primer lugar te has olvidado de poner el slash al final de cada nodo persona

Código XML :

<persona nombre="Diego" motivo="Gracias por Todo lo que haces1"/>

y en en bucle for se te ha olvidado poner firstChild. El código sería así:

Código ActionScript :

cargaXML = new XML();
cargaXML.load("gracias.xml");
cargaXML.onLoad = dameDatos;
cargaXML.ignoreWhite = true;

var gente_array:Array = [];

function dameDatos() {
   //trace(cargaXML.firstChild.childNodes.length);
   for (var i = 0; i < cargaXML.firstChild.childNodes.length; i++) {
      var xmlNode:XMLNode = cargaXML.firstChild.childNodes[i];
      gente_array.push([xmlNode.attributes.nombre, xmlNode.attributes.motivo]);
   }
   trace(gente_array);
}


/* 
 
<gracias> 
   <persona nombre="Diego" motivo="Gracias por Todo lo que haces1"/> 
   <persona nombre="Santiago" motivo="Gracias por Todo lo que haces2"/> 
   <persona nombre="Veronica" motivo="Gracias por Todo lo que haces3"/> 
   <persona nombre="Julieta" motivo="Gracias por Todo lo que haces4"/> 
   <persona nombre="Luciana" motivo="Gracias por Todo lo que haces5"/> 
   <persona nombre="Graciela" motivo="Gracias por Todo lo que haces6"/> 
</gracias> 
 
*/

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 30 Jun 2010 07:22 pm
simplemente Perfecto...
recien lo resolvi de otra manera... pero creo que la tuya es mas simple...

muchas, muchas gracias.


Código ActionScript :

var datos_arr:Array = [];

cargaXML = new XML();
cargaXML.load("gracias.xml");
cargaXML.onLoad = dameDatos;
cargaXML.ignoreWhite = true;

 
function dameDatos():Void {
   
   var len:Number = cargaXML.firstChild.childNodes.length;
   
   for (var i = 0; i<len; i++) {
      
      var tmp_obj:Object = new Object();
      
      tmp_obj.nombre = cargaXML.firstChild.childNodes[i].attributes.nombre;
      tmp_obj.motivo = cargaXML.firstChild.childNodes[i].attributes.motivo;
         
      datos_arr[i] = tmp_obj;
         
   }
      
   generateMCs();
   
}

//var gente_array = new Array (["Diego","Gracias por "],["Marco","Gracias por "],["Lucas","Gracias por "]);
//trace (gente_array);
function generateMCs():Void{
   
   for (i=0; i< datos_arr.length; i++){
      persona_mc.duplicateMovieClip ("persona_mc"+i, i);
      
      this["persona_mc"+i]._y=100;
      this["persona_mc"+i]._x=i*persona_mc._width;
      this["persona_mc"+i].nombre_txt.text = datos_arr[i].nombre;
      this["persona_mc"+i].gracias_txt.text = datos_arr[i].motivo;
      this["persona_mc"+i].gracias_txt._visible = false;
      
   }
   
}

Por di3

33 de clabLevel



 

firefox

 

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