2011-03-10 27 views
0

上工作我的代碼與XmlPullParser有問題,不知道這是否只是我或一個錯誤。我無法獲得getPrefix()或getNamespacePrefix()在android

我簡單解析使用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

代碼看起來很奇怪。您正在從工廠請求XmlPullParser,然後使用資源中的XmlPullParser覆蓋它。你想使用哪一個? – 2011-03-10 18:44:41

+0

來自資源的一個。我忘了從工廠中刪除一個 – eephyne 2011-03-11 07:45:07

回答

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?

0

XmlPullParser是一個接口,所以你必須得到一些默認XmlPullParser實現,而實現的getPrefix()方法拋出異常,因爲getPrefix()沒有實施。