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?
