我的代码与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起就在这里)
答案 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吗?