Pregunta

Ha surgido un problema extraño ... revisé varios sitios web pero no pude encontrar nada malo con el código ... pero devuelve NullPointerException...

try { 

    SAXParserFactory f = SAXParserFactory.newInstance();
    SAXParser parser = f.newSAXParser();
    XMLReader reader = parser.getXMLReader();
    reader.setContentHandler(handler);
    System.out.println(uri_this);
    reader.parse(new InputSource(url_this.openStream())); // i get nullpointerexception here 

} catch (NullPointerException e) {
    System.out.println(e);
}

En la declaración de captura he atrapado NullPointerException y lo hizo imprimir el error.

los ContentHandler está bien porque tengo archivos analizados para archivos pequeños, pero para archivos más grandes, no parece funcionar. ¿Cuál es el problema? ¿O necesito algo de búfer para archivos más grandes? No tengo idea y he probado todas las posibilidades, excepto el almacenamiento en búfer porque no conozco la codificación para eso.

Descubrí 1 cosa: el objeto de la fuente de entrada se libera antes del reader.parse puede terminar. No entiendo por qué está sucediendo.

los LogCat da lo siguiente (solo la parte errónea):

01-06 15:12:27.145: INFO/System.out(319): http://mywebsite.com/products_xml.php?cPath=43
01-06 15:12:31.094: DEBUG/dalvikvm(319): GC freed 4031 objects / 203424 bytes in 189ms
01-06 15:12:31.505: DEBUG/dalvikvm(100): GC freed 3326 objects / 190192 bytes in 283ms
01-06 15:12:34.274: DEBUG/dalvikvm(319): GC freed 1153 objects / 80432 bytes in 146ms
01-06 15:12:34.646: INFO/System.out(319): java.lang.NullPointerException

Estoy obteniendo la URL "URL_IS" 4M el constructor como argumentos.

¿Fue útil?

Solución 2

Hey gracias a todos ustedes. Recibí mi error. En realidad, en 1 caso no había texto entre la etiqueta de inicio y finalización ... de ahí la variable en la que almacené el texto era nulo ... llamé .ToString () en eso. resultando en una excepción: NullPointerException. Gracias a todos los 4 tu ayuda.

Otros consejos

No hay suficiente información para ayudarlo aquí, pero ¿notó que imprime una variable llamada Uri_This en el caparazón pero la desertor url ser analizado? Entonces, solo porque el archivo de registro muestra http://mywebsite.com/products_xml.php?cpath=43 no significa automáticamente que la variable url se inicializa y también contiene esa cadena.

O podría ser que el método OpenStream () en el objeto URL (sea cual sea el tipo que sea) devuelve nulo en algunas condiciones y la entrada de entrada no puede manejar que se pase nulo en el constructor. Como dije, no hay suficiente información en el fraglete corto para resolver su problema.

Salud.

Acabo de lanzar una biblioteca para hacer un análisis XML en Android 10x más fácil de lo que es actualmente. Es una capa de abstracción muy pequeña que se encuentra en la parte superior de las bibliotecas de análisis XML existentes proporcionadas por el tiempo de ejecución y le permite usar rutas simples de tipo XPath a elementos para recuperar los valores analizados.

El impacto del rendimiento es casi nada en la parte superior de la operación de análisis existente, es una implementación muy simple/limpia:http://www.thebuzzmedia.com/software/simple-java-xml-parser-sjxp/

Verifique la URL anterior http://www.androidhive.info/2011/11/android-xml-carsing-tutorial/

cambios realizados en xmlparser.java

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
xml = EntityUtils.toString(httpEntity);

Funcionará Inshaallah ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top