Comunidad de diseño web y desarrollo en internet online

Duda con XML, no acabo de entender cómo recorrerlo

Citar            
MensajeEscrito el 08 Oct 2009 11:50 pm
Hola

Tengo el siguiente archivo XML

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 :

...
      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.
Leí el tutorial de cristalab, en este caso tengo un nivel más, pero no entiendo porqué no va.
Otra pregunta sería como evitar tanto nextSibling.
He intentado esto, pero no funciona:

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;      


¿Cómo lo ven? :?

Por daniel69

78 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Oct 2009 12:06 am

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 09 Oct 2009 12:11 am
Hola bubudrc, gracias por el tip, pero ese es el tutorial que menciono en mi post, ya lo miré, y de hecho el código lo desarrollé a partir de él (y luego de otros).
Pero no me sirve ya en ese tuto sólo hay 2 niveles, en mi xml hay uno más y por lo que sea no chuta.
Tampoco hace uso de nextSibling, que yo tampoco entiendo muy bien, justo lo copié de un ejemplo que ví por ahí.

Debería leer el último hijo del XML (telefono2) pero no lo hace y no lo entendí porqué.

Por daniel69

78 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Oct 2009 05:02 pm
Nada, que no hay manera.
¿Alguien conoce algún tuto que me oriente para saber cómo arreglar este problema?

Gracias :)

Por daniel69

78 de clabLevel



 

firefox

 

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