XmlPullParser工作不随同InputStream [英] XmlPullParser is not working with InputStream

查看:187
本文介绍了XmlPullParser工作不随同InputStream的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用XmlPullParser的XML解析在我的Andr​​oid应用程序,但是当我输入设置为InputStream的它不工作,而我设置输入作为读者就开始工作。

  XmlPullParserFactory厂= XmlPullParserFactory.newInstance();
factory.setNamespaceAware(真正的);
XmlPullParser XPP = factory.newPullParser();
xpp.setInput(OBJ,NULL); // obj是InputStream的对象
INT EVENTTYPE = xpp.getEventType();
而(EVENTTYPE!= XmlPullParser.END_DOCUMENT){
                 logger.println(EVENTTYPE ..+ EVENTTYPE);
              如果(EVENTTYPE == XmlPullParser.START_DOCUMENT){

                     //控制转到这里只

              }否则,如果(EVENTTYPE == XmlPullParser.START_TAG){
                  //这个块永远不会执行
                  }

              }否则,如果(EVENTTYPE == XmlPullParser.END_TAG){
                 //这个块永远不会执行
              }否则,如果(EVENTTYPE == XmlPullParser.TEXT){

              }
              EVENTTYPE = xpp.next();
             }
 

即使我存储从InputStream对象中的数据串并设置该字符串为输入那么这code也能正常工作。

  xpp.setInput(新StringReader(STR)); // STR包含InputStream中的数据
 

解决方案

同样的问题:通过直接的InputStream正常工作在Android 2.3.3,但不能在4.1工作。 您可以使用 xpp.setInput(新的InputStreamReader(OBJ));

I am using XmlPullParser for xml parsing in my android app but when I set input as InputStream it not works while I set input as Reader it starts working

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();
             }

Even if I store data from InputStream object in a string and set that String as input then this code also works fine.

xpp.setInput(new StringReader(str));//str contains the data from InputStream

解决方案

The same problem: passing InputStream directly works fine on Android 2.3.3 but doesn't work on 4.1. You can use xpp.setInput(new InputStreamReader(obj));

这篇关于XmlPullParser工作不随同InputStream的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆