XmlPullParser no funciona con InputStream
Estoy utilizando XmlPullParser para el análisis de xml en mi aplicación de Android, pero cuando se establece la entrada como InputStream no funciona mientras que establece la entrada como lector que comienza a trabajar
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(); }
Incluso si almacenar datos de objeto InputStream en una cadena y establecer que String como entrada a continuación, este código también funciona bien.
- ArrayIndexOutOfBoundsException en el KXmlParser de android
- Android: El mejor analizador para analizar datos XML
- Xml extraer elementos del analizador xml
- XmlPullParser getAttributeValue devuelve null
- Android ksoap llamada xmlpullparser excepción
xpp.setInput(new StringReader(str));//str contains the data from InputStream
- XmlPullParserException al analizar un archivo de recursos en Android
- ¿Cómo puedo analizar XML android?
- XmlPullParser: obtener texto interno incluyendo etiquetas XML
- Manejando espacios de nombres Xml con XmlPullParser
- Obtener stringXmlContent y escribir a continuación, guardado en el archivo .xml almacenado en sdcard en android ¿cómo se puede?
- ¿Existe una manera de enumerar las funciones XMLPullParser disponibles en el dispositivo Android actual?
- XmlPullParser - Analizar etiqueta analizada
- Net.sqlcipher.database.SQLiteException: no es un error:
El mismo problema: pasar InputStream directamente funciona bien en Android 2.3.3 pero no funciona en 4.1. Puede utilizar xpp.setInput(new InputStreamReader(obj));
Tengo la respuesta para un problema similar de yano en este hilo: XmlPullParser – token inesperado (android)
Usted necesita moverse de archivo de res / xml a los activos y obtener el archivo con el código:
InputStream in = this.getAssets().open("sample.xml");
Al parecer, getRawResource () no lee la codificación correctamente y si acaba de volcar el contenido del inputtream hay un montón de caracteres de la basura.
- Aplicaciones que no se ejecutan en el emulador / dispositivo de Android
- ¿Cómo implementan el sistema de recompensas en aplicaciones / juegos?