2012-06-25 16 views
5

Sto usando XmlPullParser per xml parsing nella mia app Android, ma quando ho impostato ingresso come InputStream non funziona, mentre ho impostato ingresso come lettore si inizia a lavorareXmlPullParser non funziona con InputStream

XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
factory.setNamespaceAware(true); 
XmlPullParser xpp = factory.newPullParser(); 
xpp.setInput(obj,null);//obj is the object of InputStream 
int eventType = xpp.getEventType(); 
while (eventType != XmlPullParser.END_DOCUMENT) { 
       logger.println("eventType.."+eventType); 
       if(eventType == XmlPullParser.START_DOCUMENT) { 

        // control goes here only 

       } else if(eventType == XmlPullParser.START_TAG) { 
        //This block never executed 
        } 

       } else if(eventType == XmlPullParser.END_TAG) { 
       //This block never executed 
       } else if(eventType == XmlPullParser.TEXT) { 

       } 
       eventType = xpp.next(); 
      } 

Anche se devo conservare i dati dall'oggetto InputStream in una stringa e impostano quella stringa come input, quindi anche questo codice funziona correttamente.

+0

come si presenta la dichiarazione xml (cioè la "' '" Parte) nel tuo documento? – Jens

+0

\t questa è la mia struttura xml – Azmat

+1

Puoi pubblicare il codice dove crei 'obj '? – Jave

risposta

3

Lo stesso problema: passare InputStream funziona correttamente su Android 2.3.3 ma non funziona su 4.1. È possibile utilizzare xpp.setInput(new InputStreamReader(obj));

+1

L'esecuzione di Android 4.3 e InputStreamReader genera lo stesso errore. –

0

avuto la risposta per un problema simile da Yano su questo thread: XmlPullParser - unexpected token (android)

È necessario passare da file da res/xml alle attività e ottenere il file con il codice:

InputStream in = this.getAssets().open("sample.xml"); 

Apparentemente getRawResource() non legge correttamente la codifica e se si esegue il dump del contenuto di inputstream ci sono molti caratteri garbage.

Problemi correlati