Foros del Web » Programación para mayores de 30 ;) » Java »

Problema con DocumentBuilder.parse

Estas en el tema de Problema con DocumentBuilder.parse en el foro de Java en Foros del Web. Hola gente, soy nuevo en Java (hice hace poco la SJCP), y estoy haciendo mi primer proyecto con el lenguaje. Parte de lo que quiero ...
  #1 (permalink)  
Antiguo 25/06/2007, 10:06
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Problema con DocumentBuilder.parse

Hola gente, soy nuevo en Java (hice hace poco la SJCP), y estoy haciendo mi primer proyecto con el lenguaje.

Parte de lo que quiero hacer es cargar un documento xml desde un archivo y obtener ciertos datos de él, pero el método parser de DocumentBuilder me devuelve un documento que, al intentar usar getElementsByTagName sobre él, me tira una preciosa NullPointerException.

Pego algo de código para que vean si estoy haciendo algo mal, les cuento que el problema es siempre una NPE y no otras (como SAXException, que es una de las que tira el método parser).

Código:
xml = dBuilder.parse(new File(archivos[i]));
id = Integer.getInteger(xml.getElementsByTagName("id").item(0).getTextContent());
Ya comprobé que archivos[i] es un archivo válido (via el método .exists() de File). El mensaje de error es:

java.lang.NullPointerException
at juHT.juHT.main(juHT.java:48)

Ya comprobé que dBuilder (que es de tipo DocumentBuilder) sea correcta.

La línea 48 es la que pegué, la que hace el getElementsByTagName.
Se supone que si fuera error de acceso debería tirar IOException, y en caso de un error de análisis del documento, SAXException. Sin embargo, nada dice la API de un NullPointer....

¿alguna idea?
  #2 (permalink)  
Antiguo 25/06/2007, 10:38
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 7 meses
Puntos: 51
Re: Problema con DocumentBuilder.parse

En esa linea estas usando 4 referencias a objetos que podrían, a priori, ser nul. Así que si quieres saber cual es, lo mejor es que separes esa linea en los pasos necesarios.
Es decir
xml podría ser null (esta es dificil).
xml.getElementsByTagName("id") podría ser null.
xml.getElementsByTagName("id").item(0) podría ser null.
y xml.getElementsByTagName("id").item(0).getTextCont ent() podría ser null.

Cualquiera de esas circunstancias te daría ese error.

S!
  #3 (permalink)  
Antiguo 25/06/2007, 11:39
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Problema con DocumentBuilder.parse

GreenEyed, gracias por tu respuesta. Había asumido que el error estaba en xml por algo bastante simple: en un principio la línea 48 estaba partida en 2 y contenía solamente
Código:
id = Integer.getInteger(xml.getElementsByTagName("id")
Si el error hubiera estado en alguna de las otras llamadas me habría mostrado que estaba en la línea 49, no 48.

El caso es que me puse a probar y puse esto
Código:
System.out.println(xml.getElementsByTagName("id").item(0).getTextContent());
id = Integer.getInteger("1");
Con lo que obtuve un 1 de la primera línea (el sysout) y un NPE en la segunda

El error estaba en que id es una variable int, no Integer, así que el método que debí usar no era getInteger sino parseInt. Aunque no entiendo el por qué de la NPE en vez de un error más claro. En fin, gracias por todo, problema solucionado

Saludos.
  #4 (permalink)  
Antiguo 25/06/2007, 13:19
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 7 meses
Puntos: 51
Re: Problema con DocumentBuilder.parse

Ahhhh, carajo, no me habia fijado en el Integer.getInteger();... es verdad que tiene que ser parseInt().

Hace poco alguien pregunto lo mismo de Boolean.getBoolean() que es igual de ilogico. En realidad devuelven el valor de la propiedad de sistema con el nombre que les pasas como parametro...

En fin, me alegro que al menos te haya dado una pista .

S!
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.