0

我在使用 XmlPullParser 的代码时遇到了问题,不知道这只是我的问题还是一个错误。

我只是使用 xmlpullparser 解析一个 xml 文件(如下所示):

   XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
         factory.setNamespaceAware(true);

         XmlPullParser xpp = factory.newPullParser();
         xpp = c.getResources().getXml(id);
         int quantity = 0;
         int eventType = xpp.getEventType();
         while (eventType != XmlPullParser.END_DOCUMENT) {
            if (eventType == XmlPullParser.START_TAG) {
                  Log.d("al","Start tag "+xpp.getPrefix());
            }
            xpp.next();
        }

并且程序不工作,它说 RuntimeException , getPrefix not supported 。我对此一无所知。难道我做错了什么 ?

(我使用的是 api 7,anddev 网站说它从 api 1 开始就在这里)

4

2 回答 2

0

XmlPullParser是一个接口,因此您必须获得一些默认XmlPullParser实现,并且该实现的getPrefix()方法由于getPrefix()未实现而引发异常。

于 2011-03-10T18:36:42.780 回答
0

问题是

xpp = c.getResources().getXml(id);

就像 Robby 说的,getPrefix() 没有实现

而不是那个,我做:

XmlPullParser xpp = factory.newPullParser();
InputStreamReader isr = new InputStreamReader(c.getResources().openRawResource(id));
xpp.setInput(isr);

可能是因为我的工厂知道 Nampespace 并且 getResources().getXml() 返回一个不关心命名空间的 XmlRessourceParser 吗?

于 2011-03-11T08:57:40.703 回答