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

[SOLUCIONADO] Problema con XmlReader

Estas en el tema de Problema con XmlReader en el foro de Java en Foros del Web. Hola, Me encuentro con un problema a la hora de utilizar XmlReader en Java. El xml que tengo que parsear contiene querys de sql en ...
  #1 (permalink)  
Antiguo 05/11/2014, 10:23
 
Fecha de Ingreso: abril-2006
Mensajes: 23
Antigüedad: 18 años, 7 meses
Puntos: 0
Problema con XmlReader

Hola,

Me encuentro con un problema a la hora de utilizar XmlReader en Java.
El xml que tengo que parsear contiene querys de sql en tags <sql>, es un xml largo y me lo parsea bien cuando lo ahago en mi local con JBoss y en Windows. Una de esas querys es bastante larga, unos 3000 caracteres.

Pues cuando se realiza el mismo parseo en otro servidor Jboss desplegado en Linux esa query larga no la parsea bien, me la voge a partir de cierta palabra y hasta el final, si sacas algún trozo de la query sigue cogiendo la desde el mismo punto.

Teniendo en cuenta que los Jboss tiene los dos como encoding UTF-8, la version de Java de windows es la 1.6.0_45 y en linux tengo la 1.6.0_32, y el xml tiene como cabecera <?xml version="1.0" encoding="UTF-8" ?>

Muchas gracias,
  #2 (permalink)  
Antiguo 05/11/2014, 11:18
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: Problema con XmlReader

XmlReader es una interfaz, así que sería conveniente que dieras más información.

Además intenta no duplicar los mensajes.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 05/11/2014, 11:56
 
Fecha de Ingreso: abril-2006
Mensajes: 23
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Problema con XmlReader

Hola,

Concretamente lo que hago es estoi:

Código:
public List<? extends Nodo> parseXml(InputStream is) throws XmlException {

		try {

			ParserHandler handler = new ParserHandler(nodo);

			XMLReader parser = XMLReaderFactory.createXMLReader();
			parser.setContentHandler(handler);
			InputSource source = new InputSource(is);

			parser.parse(source);
			
			nodos = (List<Nodo>) handler.getDatos();

		} catch (SAXException e) {
			throw new XmlException("Error al parsear el documento xml: " + e.getMessage(), e);
		} catch (IOException e) {
			throw new XmlException("Error al parsear el documento xml: " + e.getMessage(), e);
		} catch (ParserConfigurationException e) {
			throw new XmlException("Error al parsear el documento xml: " + e.getMessage(), e);
		} finally {
			try {
				is.close();
			} catch (IOException e) {
				log.warn("No se ha cerrado correctamente el InputStream: " + e.getMessage());
			}
		}

		return nodos;
	}
En nodos debería que dar el documento parseado correctamente, y lo único que está mal es esa query larga

Gracias,
Un saludo[
  #4 (permalink)  
Antiguo 05/11/2014, 12:13
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: Problema con XmlReader

Buenas,

Es exactamente el mismo fichero el que parsea o es un fichero generado independientemente por cada sistema?
Puedes poner el error de parseo que te da? (la pila completa, a poder ser)

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #5 (permalink)  
Antiguo 06/11/2014, 01:54
 
Fecha de Ingreso: abril-2006
Mensajes: 23
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Problema con XmlReader

Cita:
Iniciado por Profesor_Falken Ver Mensaje
Buenas,

Es exactamente el mismo fichero el que parsea o es un fichero generado independientemente por cada sistema?
Puedes poner el error de parseo que te da? (la pila completa, a poder ser)

Un saludo

Hola,

Si que es el mismo fichero en los dos sitios. El problema es que no hay una traza de error. Parece como si lo parseara bien, porque vas depurando y salta ninguna excepción ni error

Gracias,
Un saludo
  #6 (permalink)  
Antiguo 06/11/2014, 02:49
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: Problema con XmlReader

Cita:
Parece como si lo parseara bien, porque vas depurando y salta ninguna excepción ni error
Quizas porque no estas capturando todas las excepciones?

[....]
} catch (SAXException e) {
throw new XmlException("Error al parsear el documento xml: " + e.getMessage(), e);
} catch (IOException e) {
throw new XmlException("Error al parsear el documento xml: " + e.getMessage(), e);
} catch (ParserConfigurationException e) {
throw new XmlException("Error al parsear el documento xml: " + e.getMessage(), e);
} catch (Exception e) {
e.printStackTrace();
}
finally {
try {
is.close();
} catch (IOException e) {
log.warn("No se ha cerrado correctamente el InputStream: " + e.getMessage());
}
}
[...]

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #7 (permalink)  
Antiguo 06/11/2014, 03:02
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: Problema con XmlReader

Profesor_Falken, por lo que dice sí la parsea pero no entera.

A mí me tiene pinta de que hay algo en esa query en concreto, un retorno de carro o un signo extraño. Prueba a meter un texto igual de largo pero sólo con letras o a modificar el fichero. Revisa el encoding del fichero, que estés poniendo la etiqueta UTF-8 no significa que lo sea.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #8 (permalink)  
Antiguo 06/11/2014, 04:34
 
Fecha de Ingreso: abril-2006
Mensajes: 23
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Problema con XmlReader

Ya encontré la solución

El problema era que el ContentHandler.characters () del handler puede ser fragmentado de manera diferente dependiendo del tiempo de ejecución. La consulta SQL se analiza en dos bloques, por lo que se necesita concatenar los caracteres enviados hasta la llamada endElement.

Muchas gracias,

Etiquetas: xml
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 22:17.