2011-03-10 2 views
0

내 코드에 XmlPullParser를 사용하여 문제가 발생했으며 이것이 나 또는 버그인지 여부를 알 수 없습니다.getPrefix() 또는 getNamespacePrefix()가 android에서 작동하도록 할 수 없습니다.

내가 단순히 XML을 (다음과 같이) xmlpullparser를 사용하여 파일을 구문 분석 :

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로 덮어 씁니다. 어느 쪽을 사용 하시겠습니까? –

+0

하나는 자원에서 왔습니다. 그걸 공장에서 지우는 걸 잊었 어. – eephyne

답변

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() 때문에 예외를 던지고 있도록 인터페이스가 구현되지 않았습니다.

관련 문제