Domanda

Una strana problema è ritagliata ... Ho controllato diversi siti web, ma non sono riuscito a trovare niente di sbagliato con il codice ... ma restituisce 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);
}

Nel istruzione catch ho preso NullPointerException e ne ha fatto stampare l'errore.

Il ContentHandler va bene perché ho avuto i file analizzato alla ricerca di file di piccole dimensioni, ma per i file più grandi, ma non sembra funzionare. Qual è il problema? O ho bisogno di un po 'di buffer per i file più grandi? Sono incapaci e ho provato tutte le possibilità eccetto il buffering perché non so la codifica per questo.

ho capito 1 cosa: l'oggetto della sorgente d'ingresso viene liberato prima che il reader.parse può finire. Non capisco perché sta accadendo.

Il LogCat ha pronunciato la seguente (solo la parte errata):

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

sto ottenendo l'URL "url_this" 4m costruttore come argomenti.

È stato utile?

Soluzione 2

Ciao thanx tutti u. Ho ottenuto il mio errore. effettivamente in 1 caso non vi era alcuna testo tra inizio e fine tag ... quindi la variabile i memorizzato testo è nullo ... ho chiamato .toString () su tale. con conseguente un'eccezione - NullPointerException. Thanx tutto l'aiuto 4 ur.

Altri suggerimenti

Non ci abbastanza informazioni per aiutarvi a qui, ma avete notato che di stampare una variabile chiamata uri_this nel guscio, ma dereference URL per essere analizzato? Quindi, solo perché gli spettacoli file di registro http://mywebsite.com/products_xml.php?cPath = 43 non significa automaticamente che la variabile uRL viene inizializzato e contiene anche la stringa.

Oppure potrebbe essere che il metodo openStream () sull'oggetto url (qualunque tipo esso sia) restituisce null in alcune condizioni e InputSource non può gestire essere passati nullo nel costruttore. Come ho già detto - non c'è abbastanza informazioni nel breve snipplet per risolvere il problema

.

Saluti.

Ho appena rilasciato una libreria per fare il parsing di XML su Android 10x più facile di quanto lo sia attualmente. Si tratta di un piccolo strato di astrazione che si trova sulla cima delle librerie di parsing XML di pull esistenti fornite dal runtime e consentono di utilizzare semplici percorsi XPath-come elementi per ottenere valori analizzati indietro.

Impatto sulle prestazioni è quasi nulla in cima alla operazione di analisi esistente, si tratta di un molto semplice implementazione / pulito: http://www.thebuzzmedia.com/software/simple-java- xml-parser-sjxp /

http://www.androidhive.info / 2011/11 / android-xml-analisi-tutorial /

le modifiche apportate in XMLParser.java

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

lo farà funziona InshaAllah ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top