2012-08-15 15 views
7

Estoy haciendo un análisis XML regular en android, y muy raramente obtengo esta excepción y solo en determinados teléfonos. No he podido llegar a la raíz de este problema. ¿Alguien tiene una idea de lo que podría estar causando esto?ArrayIndexOutOfBoundsException en android's KXmlParser

java.lang.ArrayIndexOutOfBoundsException: src.length=8192 srcPos=1 dst.length=8192 dstPos=0 length=-1 
    at java.lang.System.arraycopy(Native Method) 
    at org.kxml2.io.KXmlParser.fillBuffer(KXmlParser.java:1489) 
    at org.kxml2.io.KXmlParser.skip(KXmlParser.java:1574) 
    at org.kxml2.io.KXmlParser.parseStartTag(KXmlParser.java:1049) 
    at org.kxml2.io.KXmlParser.next(KXmlParser.java:369) 
    at org.kxml2.io.KXmlParser.next(KXmlParser.java:310) 

Respuesta

1

Tengo una excepción similar. En mi caso, el xml se había descargado y guardado en la SD. Cuando abrí el archivo, vi que cortaba "mitad de frase", por así decirlo. Parecía que había habido un error al descargar el archivo. Eliminar el archivo y volver a descargar solucionó el problema en esta instancia, pero para evitar problemas futuros del mismo tipo, busco ArrayIndexOutOfBoundsException al leer un archivo xml y supongo que el archivo está dañado cuando detecta uno.

Obviamente es solo una solución de cinta para un problema vagamente definido en este momento. Si averiguo más, actualizaré mi respuesta.

0

encontré una corrección de errores para Android 4.4 mencionar esto: Change 61530

Así la excepción adecuada que debería estar recibiendo es: no terminado el contenido del elemento de especificaciones, lo que significa EOF inesperado.

0

La capa inferior (kxml) arroja incorrectamente una excepción no comprobada cuando encuentra xml incorrecto. Para solucionar esto, cuando se utiliza XmlPullParser, reemplace

try { 
    // use XmlPullParser 
} 
catch (XmlPullParserException ex) { ... } 

con

try { 
    // use XmlPullParser 
} 
catch (Exception ex) { ... } 
Cuestiones relacionadas