Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/10/2009, 11:07
bleim
 
Fecha de Ingreso: septiembre-2009
Mensajes: 2
Antigüedad: 14 años, 8 meses
Puntos: 0
Duda de cómo recorrer XML en flash y sacar sus datos

Hola a todos

Este es mi primer mensaje en este magnífico foro. Ya llevo un tiempo leyendo vuestros posts, y será un placer participar en él.

Tengo el siguiente archivo XML

Código :
Código:
<listaDeClientes>
   <cliente>
      <idcliente>1</idcliente>
      <nombre>Dan</nombre>
      <apellidos>Bus</apellidos>
      <telefono1>963344111</telefono1>
      <telefono2>656870650</telefono2>
   </cliente>
   <cliente>
      <idcliente>3</idcliente>
      <nombre>María</nombre>
      <apellidos>De la O</apellidos>
      <telefono1>963300444</telefono1>
      <telefono2>626670644</telefono2>
   </cliente>
   <cliente>
      <idcliente>6</idcliente>
      <nombre>Pablo</nombre>
      <apellidos>Tor</apellidos>
      <telefono1>9616233440</telefono1>
      <telefono2></telefono2>
   </cliente>
</listaDeClientes>

Como ven bastante sencillo.
Ahora lo recorro en un bucle y le voy asignando los valores a unos arrays:

Código :
Código:
...
      largo = cargaXML.firstChild.childNodes.length;
      //Llenar los arrays de datos
      for (i=0; i<largo; i++){
         idcliente_var[i]= cargaXML.firstChild.childNodes[i].firstChild.firstChild.nodeValue;
         nombre_var[i]    = cargaXML.firstChild.childNodes[i].firstChild.nextSibling.firstChild.nodeValue;
         apellidos_var[i]= cargaXML.firstChild.childNodes[i].firstChild.nextSibling.nextSibling.firstChild.nodeValue;
         telefono1_var[i]= cargaXML.firstChild.childNodes[i].firstChild.nextSibling.nextSibling.nextSibling.firstChild.nodeValue;
         telefono2_var[i]= cargaXML.firstChild.childNodes[i].firstChild.nextSibling.nextSibling.nextSibling.nextSibling.firstChild.nodeValue;
...

El caso es que el último campo del XML de cada hijo <cliente> no lo lee (devuelve 'undefined').
No hay manera para que lo lea. ¿me hechan un cable?

Creo que el problema es que no entiendo bien los xml.

Otra pregunta sería como evitar tanto nextSibling.
He intentado esto, pero no funciona:

Código :
Código:
         idcliente_var[i]= cargaXML.firstChild.childNodes[i].firstChild.firstChild.nodeValue;
         nombre_var[i]    = cargaXML.firstChild.childNodes[i].firstChild.firstChild.childNodes[1].nodeValue;
         apellidos_var[i]= cargaXML.firstChild.childNodes[i].firstChild.firstChild.childNodes[2].nodeValue;
         telefono1_var[i]= cargaXML.firstChild.childNodes[i].firstChild.firstChild.childNodes[3].nodeValue;
         telefono2_var[i]= cargaXML.firstChild.childNodes[i].firstChild.firstChild.childNodes[4].nodeValue;

He visto varios tutos por la red pero no me aclaro. ¿Cómo lo ven? :?