我无法让getPrefix()或getNamespacePrefix()在android上运行

时间:2011-03-10 18:22:53

标签: android xmlpullparser

我的代码与XmlPullParser有问题,不知道这只是我还是个bug。

我只是使用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。 我一无所获。 我做错了什么?

(我正在使用api 7和anddev网站说它自api 1起就在这里)

2 个答案:

答案 0 :(得分:0)

XmlPullParser是一个接口,因此您必须获得一些默认的XmlPullParser实现,并且该实现的getPrefix()方法会抛出异常,因为getPrefix()未实现。< / p>

答案 1 :(得分:0)

问题是

xpp = c.getResources().getXml(id);
像罗比说的那样,getPrefix()没有实现

而不是那样,我做:

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

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