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

etiquetas xml

Estas en el tema de etiquetas xml en el foro de Frameworks JS en Foros del Web. Hola Gente! Cuando tengo una etiqueta vacia en xml, al pasar por la siguiente línea del script: item.getElementsByTagName('nombre')[0].firstChild.data; me da este errorerror: "se requiere un ...
  #1 (permalink)  
Antiguo 07/11/2007, 12:15
Avatar de Jesica  
Fecha de Ingreso: agosto-2007
Mensajes: 78
Antigüedad: 16 años, 9 meses
Puntos: 0
etiquetas xml

Hola Gente!

Cuando tengo una etiqueta vacia en xml, al pasar por la siguiente línea del script:

item.getElementsByTagName('nombre')[0].firstChild.data;

me da este errorerror:
"se requiere un objeto":

esto ocurre cuando el xml para el item nombre es vacio, es decir:

<xml>
<id>1</id>
<nombre></nombre>
</xml>

A que se puede deber esto?
Este seria el codigo completo :


Código HTML:
function leerDatos(){
    document.getElementById("lista").innerHTML="Cargando.......";
    if (oXML.readyState == 4)
    {
        xml  = oXML.responseXML.documentElement;
        var tabla = '<table border = "1" bordercolor= "blue"><tr>';
        for (i = 0; i < xml.getElementsByTagName('laboratorios').length; i++)
        {
            var item = xml.getElementsByTagName('laboratorios')[i];
            var idGrilla=i
            var idLaboratorio = item.getElementsByTagName('idLaboratorio')[0].firstChild.data;
            var nombre = item.getElementsByTagName('nombre')[0].firstChild.data;
            var ubicacion = item.getElementsByTagName('ubicacion')[0].firstChild.data;
            var telefono = item.getElementsByTagName('telefono')[0].firstChild.data;
            var responsable = item.getElementsByTagName('responsable')[0].firstChild.data;
            var emailResponsable = item.getElementsByTagName('emailResponsable')[0].firstChild.data;

            tabla = tabla + '<td><div onclick="cargarCamposLaboratorios('+ idGrilla + ')">' + idLaboratorio + '</div></td>';
            tabla = tabla + '<td>' + nombre + '</td>';
            tabla = tabla + '<td>' + ubicacion + '</td>';
            tabla = tabla + '<td>' + telefono + '</td>';
            tabla = tabla + '<td>' + responsable + '</td>';
            tabla = tabla + '<td>' + emailResponsable + '</td>';
            tabla=tabla + '</tr>'
        }
        tabla= tabla + '</table>';

        document.getElementById("lista").innerHTML=tabla;

    }

}


muchas gracias desde ya

saludos

Última edición por Jesica; 08/11/2007 a las 06:52
  #2 (permalink)  
Antiguo 08/11/2007, 06:55
Avatar de Jesica  
Fecha de Ingreso: agosto-2007
Mensajes: 78
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: etiquetas xml

Me sugirieron que haga un if que verifique que el script item.getElementsByTagName('nombre')[0].firstChild.data; no sea null, lo hice para cada variable (nombre, ubicacion, telefono, etc,) pero solo funciona si se lo hago a una. les paso el codigo con if por si encuentran algun error

Código HTML:
function leerDatos(){
	document.getElementById("lista").innerHTML="Cargando.......";
	if (oXML.readyState == 4)
	{
		xml  = oXML.responseXML.documentElement;
		var tabla = '<table border = "1" bordercolor= "red"><tr>';
		tabla+='<th>id</th><th>Nombre</th><th>Ubicacion</th><th>Telefonos</th><th>Responsable</th><th>Email Responsable</th></tr>';
		for (i = 0; i < xml.getElementsByTagName('laboratorios').length; i++)
		{
			var item = xml.getElementsByTagName('laboratorios')[i];
			var idGrilla=i
			var id = item.getElementsByTagName('id')[0].firstChild.data;
			if (item.getElementsByTagName('nombre')[0].firstChild.data == null)
			{
				var nombre = ''
			}
			
			else
			{
				var nombre = item.getElementsByTagName('nombre')[0].firstChild.data
			}
			
			
			if ( item.getElementsByTagName('ubicacion')[0].firstChild.data == null)
			{
				var ubicacion= ''
			}
			else
			{
				var ubicacion = item.getElementsByTagName('ubicacion')[0].firstChild.data
			}
			
			var telefono = item.getElementsByTagName('telefono')[0].firstChild.data;
			var responsable = item.getElementsByTagName('responsable')[0].firstChild.data;
			var emailResponsable = item.getElementsByTagName('emailResponsable')[0].firstChild.data;

			tabla = tabla + '<td><div onclick="cargarCamposLaboratorios('+ idGrilla + ')">' + id + '</div></td>';
			tabla = tabla + '<td>' + nombre + '</td>';
			tabla = tabla + '<td>' + ubicacion + '</td>';
			tabla = tabla + '<td>' + telefono + '</td>';
			tabla = tabla + '<td>' + responsable + '</td>';
			tabla = tabla + '<td>' + emailResponsable + '</td>';
			tabla=tabla + '</tr>'
		}
		tabla= tabla + '</table>';

		document.getElementById("lista").innerHTML=tabla;

	}

}
Por favor, si encuentran algun error contestenmen, estoy frenada con este problema.
Gracias
  #3 (permalink)  
Antiguo 08/11/2007, 10:42
 
Fecha de Ingreso: marzo-2007
Mensajes: 58
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: etiquetas xml

Prueba sustituyendo este código:

Código:
if ( item.getElementsByTagName('ubicacion')[0].firstChild.data == null)
Por este:
Código:
var cell = item.getElementsByTagName('ubicacion')[0];
if (cell.firstChild && cell.firstChild.data)
A ver si hay suerte...
  #4 (permalink)  
Antiguo 08/11/2007, 13:34
Avatar de Jesica  
Fecha de Ingreso: agosto-2007
Mensajes: 78
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: etiquetas xml

Hola, gracias por la respuesta, lo probé y aparentemente funciona, solo que no entiendo por q me completa los campos de telefono y de email del responsable con la palabra undefined y en el resto los campos q tengo en blanco los completa con "sdsfsfsd" te paso como me quedó el codigo por si me equivoque en algo:


Código HTML:
function leerDatos(){
	document.getElementById("lista").innerHTML="Cargando.......";
	if (oXML.readyState == 4)
	{
		xml  = oXML.responseXML.documentElement;
		var tabla = '<table border = "1" bordercolor= "red"><tr>';
		tabla+='<th>id</th><th>Nombre</th><th>Ubicacion</th><th>Telefonos</th><th>Responsable</th><th>Email Responsable</th></tr>';
		for (i = 0; i < xml.getElementsByTagName('laboratorios').length; i++)
		{
			var item = xml.getElementsByTagName('laboratorios')[i];
			var idGrilla=i
			var id = item.getElementsByTagName('id')[0].firstChild.data;
			
			var cell = item.getElementsByTagName('nombre')[0];
			if (cell.firstChild && cell.firstChild.data)
			{
				var nombre = item.getElementsByTagName('nombre')[0].firstChild.data
			}
						
			var cell = item.getElementsByTagName('ubicacion')[0];
			if (cell.firstChild && cell.firstChild.data)
			{
				var ubicacion = item.getElementsByTagName('ubicacion')[0].firstChild.data;
			}
			
			var cell = item.getElementsByTagName('telefono')[0];
			if (cell.firstChild && cell.firstChild.data)
			{
				var telefono = item.getElementsByTagName('telefono')[0].firstChild.data;
			}
			
			var cell = item.getElementsByTagName('responsable')[0];
			if (cell.firstChild && cell.firstChild.data) 
			{
				var responsable = item.getElementsByTagName('responsable')[0].firstChild.data;
			}
			
			var cell = item.getElementsByTagName('emailResponsable')[0];
			if (cell.firstChild && cell.firstChild.data) 
			{
				var emailResponsable = item.getElementsByTagName('emailResponsable')[0].firstChild.data;
			}

			tabla = tabla + '<td><div onclick="cargarCamposLaboratorios('+ idGrilla + ')">' + id + '</div></td>';
			tabla = tabla + '<td>' + nombre + '</td>';
			tabla = tabla + '<td>' + ubicacion + '</td>';
			tabla = tabla + '<td>' + telefono + '</td>';
			tabla = tabla + '<td>' + responsable + '</td>';
			tabla = tabla + '<td>' + emailResponsable + '</td>';
			tabla=tabla + '</tr>'
		}
		tabla= tabla + '</table>';

		document.getElementById("lista").innerHTML=tabla;

	}

}

Última edición por Jesica; 08/11/2007 a las 13:50
  #5 (permalink)  
Antiguo 09/11/2007, 09:47
 
Fecha de Ingreso: marzo-2007
Mensajes: 58
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: etiquetas xml

Me parece que te falta el "else": si la etiqueta está vacía, debes dar el valor string vacío a la variable ubicacion.
Código:
if (cell.firstChild && cell.firstChild.data) {
	var ubicacion = item.getElementsByTagName('ubicacion')[0].firstChild.data;
} else {
	var ubicacion = '';
}
  #6 (permalink)  
Antiguo 09/11/2007, 12:01
Avatar de Jesica  
Fecha de Ingreso: agosto-2007
Mensajes: 78
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: etiquetas xml

efectivamente era eso lo que me faltaba, aparentemente esta funcionando muy bien
Muchisimas Gracias mount!!!
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 21:10.