Frage

Ein seltsames Problem hat sich aufgetaucht ... Ich habe mehrere Websites überprüft, konnte aber nichts mit dem Code falsch finden ... aber es kehrt zurück 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);
}

In der Erklärung der Fang habe ich gefangen NullPointerException und ließ es den Fehler drucken.

Das ContentHandler ist in Ordnung, weil ich Parsen -Dateien für kleine Dateien habe, aber für größere Dateien nicht funktioniert. Was ist das Problem? Oder brauche ich etwas Puffer für größere Dateien? Ich bin ahnungslos und habe alle Möglichkeiten ausprobiert, außer Pufferung, weil ich die Codierung dafür nicht kenne.

Ich habe 1 Ding herausgefunden: Das Objekt der Eingangsquelle wird vor dem befreit reader.parse kann fertig werden. Ich verstehe nicht, warum es passiert.

Das LogCat gibt das Folgende an (nur den fehlerhaften Teil):

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

Ich bekomme die URL "url_this" 4M den Konstruktor als Argumente.

War es hilfreich?

Lösung 2

Hey danke dir alle. Ich habe meinen Fehler. Eigentlich gab es in einem Fall keinen Text zwischen Start- und End -Tag ... daher war die Variable, in der ich Text gespeichert habe, null ... Ich habe .ToString () dazu angerufen. Dies führt zu einer Ausnahme - NullPointerexception. Danke alle 4 deine Hilfe.

Andere Tipps

Es gibt nicht genügend Informationen, um Ihnen hier zu helfen, aber haben Sie bemerkt, dass Sie eine Variable mit dem Namen ausdrucken Uri_This in der Hülle aber dereference URL analysiert werden? Also nur, weil die Protokolldatei zeigt http://mywebsite.com/products_xml.php?cpath=43 Es bedeutet nicht automatisch, dass die Variable URL wird initialisiert und enthält auch diese Zeichenfolge.

Oder es könnte sein, dass die OpenStream () -Methode auf dem URL -Objekt (welcher Typ, der es auch immer ist), unter bestimmten Bedingungen null zurückgibt und InputSource nicht verarbeiten kann, dass der Konstruktor übergeben wird. Wie ich bereits sagte - es gibt nicht genügend Informationen im kurzen Snipplet, um Ihr Problem zu lösen.

Prost.

Ich habe gerade eine Bibliothek veröffentlicht, um XML an Android 10x zu ermöglichen, als sie derzeit ist. Es handelt sich um eine sehr kleine Abstraktionsschicht, die sich über die vorhandenen XML-Pull-Parsing-Bibliotheken befindet, die von der Laufzeit bereitgestellt werden, und ermöglicht es Ihnen, einfache XPath-ähnliche Pfade zu Elementen zu verwenden, um Parsen-Werte zurückzugewinnen.

Die Auswirkungen auf die Leistung sind fast nichts über dem vorhandenen Parse -Betrieb, sondern eine sehr einfache/saubere Implementierung:http://www.thebuzzmedia.com/software/simple-java-xml-parser-sjxp/

Überprüfen Sie die obige URL http://www.androidhive.info/2011/11/android-xml-parsing-tutorial/

Änderungen in xmlparser.java vorgenommen

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

Es wird Inshaallah funktionieren ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top