-->

XmlPullParser不随同InputStream工作(XmlPullParser is not

2019-06-25 18:14发布

我使用的XML解析XmlPullParser在我的Android应用程序,但是当我设置输入为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();
             }

即使我从InputStream对象数据存储在一个字符串,并设置字符串作为输入那么这段代码也能正常工作。

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

Answer 1:

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



Answer 2:

得到了来自矢野在此线程类似的问题的答案: XmlPullParser -意外的标记(机器人)

你需要从文件从RES / XML的移动资产和获得与代码的文件:

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

显然getRawResource()不正确读取编码,如果你只是转储InputStream的内容有很多的乱码。



文章来源: XmlPullParser is not working with InputStream