Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problema al leer nodo xml

Estas en el tema de Problema al leer nodo xml en el foro de Frameworks JS en Foros del Web. Hola, el problema es simple (para explicar jaja) -abro el archivo xml con javascript -los valores los ingreso a las variables de la siguiente forma ...
  #1 (permalink)  
Antiguo 27/11/2008, 05:58
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 17 años, 10 meses
Puntos: 19
De acuerdo Problema al leer nodo xml

Hola, el problema es simple (para explicar jaja)

-abro el archivo xml con javascript
-los valores los ingreso a las variables de la siguiente forma
Código PHP:
                var fecha m[i].getElementsByTagName('fecha')[0].childNodes[0].nodeValue;
                var 
lugar m[i].getElementsByTagName('lugar')[0].childNodes[0].nodeValue;
                var 
infrac m[i].getElementsByTagName('infracciones')[0].childNodes[0].nodeValue;
                var 
res_id_tipo m[i].getElementsByTagName('res_id_tipo')[0].childNodes[0].nodeValue;
                var 
res_fecha m[i].getElementsByTagName('res_fecha')[0].childNodes[0].nodeValue;
                var 
res_num m[i].getElementsByTagName('res_num')[0].childNodes[0].nodeValue;
                var 
abono_lugar m[i].getElementsByTagName('abono_lugar')[0].childNodes[0].nodeValue;
                var 
abono_importe m[i].getElementsByTagName('abono_importe')[0].childNodes[0].nodeValue
el problema es en la linea de "var infrac"
si borro esa linea mi codigo se ejecuta perfectamente, y si la dejo el codigo no se ejecuta, o sea se cancela la ejecucion en esa linea y el resto de codigo restante se frena!.....

pense que era problema del xml, verifique que el nombre del nodo este bien escrito

Código PHP:
<?xml version="1.0" encoding="utf-8"?>
<multas>
    <multa>
        <id>1930</id>
        <acta>14656</acta>
        <orden>0</orden>
        <vehiculo>RSX378</vehiculo>
        <fecha>2008-08-06</fecha>
        <lugar>CATAMARCA 1100</lugar>
        <infracciones>605.1.6/20: DOBLE LINEA AMARILLA Y NO ACATA ORDEN DETENCIÓN|</infracciones>
        <res_id_tipo>0</res_id_tipo>
        <res_fecha>0000-00-00</res_fecha>
        <res_num>0</res_num>
        <abono_lugar>0</abono_lugar>
        <abono_importe>0</abono_importe>
    </multa>
    <multa>
        <id>1929</id>
        <acta>14655</acta>
        <orden>0</orden>
        <vehiculo>FXR717</vehiculo>
        <fecha>2008-08-06</fecha>
        <lugar>CATAMARCA 1100</lugar>
        <infracciones>605.1.6/20: DOBLE LINEA AMARILLA Y NO ACATA ORDEN DETENCIÓN|</infracciones>
        <res_id_tipo>0</res_id_tipo>
        <res_fecha>0000-00-00</res_fecha>
        <res_num>0</res_num>
        <abono_lugar>0</abono_lugar>
        <abono_importe>0</abono_importe>
    </multa>
</multas>
bueno este es un pedaso del xml!.... son 2000 multas asi que no voy a ponerlas a todas

la verdad no se cual puede ser el problema, cuando abro el xml en firefox no me tira ningun error de sintaxis, asi que el xml no tiene fallas (supuestamente)


gracias de antemano
  #2 (permalink)  
Antiguo 27/11/2008, 07:26
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 17 años, 10 meses
Puntos: 19
Respuesta: Problema al leer nodo xml

la pregunta va orientada tambien a "que problemas podrian causar esto?"
  #3 (permalink)  
Antiguo 27/11/2008, 09:39
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Problema al leer nodo xml

Hola:

Me alegra que uses xml, ya que existe la costumbre de leer ajax con responseText y no responseXML que es lo que supongo que usas...

Un problema posible es que no existan nodos hijos, entonces deberías chequearlo con hasChildNodes()...

if (nodoXML.hasChildNodes()) respuesta = nodoXML.firstChild.nodeValue;
else respuesta = "";

He descubierto que para nodos que puedan estar vacíos y no sean de mucho contenido (por ejemplo que no tengan saltos de línea), es mejor poner esos contenidos en atributos.

Fíjate en estos foros en un tema que inicié hace algún tiempo (tal vez un par de meses) sobre destripar objetos Ajax... empecé a poner concusiones, y lo que te estoy comentando es una de ellas.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 28/11/2008, 05:15
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 17 años, 10 meses
Puntos: 19
Respuesta: Problema al leer nodo xml

en realidad caricatos no estoy usando responseXML sino que estoy usando
document.implementation.createDocument("", "", null);
y en IE el activeX XMLDOM

esto esta mal???

pense que era lo correcto, pero veo que debo usar responseXML con una coneccion ajax!...

Podrias aclararme si conoces las diferencias??

EDITO:
cambie la manera de cargar el archivo xml y ahora lo hago con una coneccion ajax (ResponseXML.documentElement) en lugar de la implementacion del createDocument o el activeX en IE

igualmente ahora no entiendo las diferencias jaja

y por otro lado el problema persiste!

el problema es que como hago para detectar el cual de todos los nodos <infracciones></infracciones> esta el problema? porque son miles! y si cargo el valor de un nodo en particular todo funciona bien, el asunto es cuando realizo un bucle que recorra todos los nodos, la aplicacion falla, y solo falla si estoy intentando leer el nodo infracciones, pero el asunto es como saber (repito) en cual de toods los nodos se esta generando el error!

Espero ser claro

Última edición por korg1988; 28/11/2008 a las 12:32
  #5 (permalink)  
Antiguo 01/12/2008, 04:10
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 17 años, 10 meses
Puntos: 19
Respuesta: Problema al leer nodo xml

alguna idea?
  #6 (permalink)  
Antiguo 01/12/2008, 04:44
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema al leer nodo xml

1. ¿Sabes que sólo falla en un determinado registro? Una forma directa entonces es revisar el XML. ¿De cuántos miles estamos hablando? Candidatos ideales a fallar son registros que tengan algo "especial" como por ejemplo saltos de línea o el campo vacío. (En concreto si alguno tiene infracciones vacío es un candidato muy claro a fallar).

2. ¿Cómo ver cuál es el que falla más cómodamente? Fácil: Ve sacando un log según procesas. Pon, por ejemplo, un <div> en la página y ve haciendo por cada registro un document.getElementById("#divLog").innerHTML += m[i].getElementsByTagName('id')[0].childNodes[0].nodeValue + " - Ok<br/>";
Cuando encuentres el problema acuérdate de quitar el div y esa línea.
  #7 (permalink)  
Antiguo 02/12/2008, 18:26
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 17 años, 10 meses
Puntos: 19
Respuesta: Problema al leer nodo xml

arme un pequeño codigo para generar un log y ver en que infracciones falla, asi que se frena en el numero anterior a la que falla....
las fui arreglando y listo. funciono todo

Saludos!
  #8 (permalink)  
Antiguo 02/12/2008, 19:00
 
Fecha de Ingreso: diciembre-2008
Mensajes: 102
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Problema al leer nodo xml

mira q el contenido de este nodo no se cruce o haga tener un mal funcionamiento al resto del script es decir quita los caracteres extraños del contenido de var infrac y prueba a ver como te va saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:16.