Error al leer XML de gran volumen con SAX

Luis
29 de Julio del 2005
He hecho una implementación con SAX para leer un fichero de 35000 registros, con 4 o 5 campos cada registro. Tras varias verificaciones he comprobado que se producen unos 70 errores en una extracción de este tipo. El error consiste en que algunos registros al azar presentan errores de lectura de algún campo. Dos de estos campos son de longitud fija, 4 y 16 caracteres de tipo texto, y durante el proceso de lectura del xml en ocasiones se leen menos caracteres, produciéndose el error. Compruebo manualmente los registros afectados verificando que la información en el xml es correcta. Cuendo exploto un fichero de menor volumen (entre 500 - 1000 registros) no ocurre ningún tipo de error. Si alguien pudiera ayudarme le estaría muy agradecido. Un saludo a todos y gracias de antemano

rty
29 de Julio del 2005
No entiendo del todo bien lo que te pasa. Aunque en un curso de XML que acabo de impartir, nos advirtieron de que SAX, en la especificación no asegura para el evento

public void characters(char[] ch, int start, int end){
}

se lea toda la información de golpe, es decir

<loquesea> esto no tiene porque leerse de una sóla vez </loquesea>

Normalmente se leerá de una sola tacada, aunque para ficheros grandes pudiera no ser así. E incocarse varias veces a characters().

Quizás sea ese tu problema, guarda la información en un StringBuffer, hasta que estes seguro de que se leyo por completo

xose
29 de Julio del 2005
Solo decir que a mí tambien me pasa, estoy parseando un archivo de unos 80 mb y hay elementos que no los parsea completamente.