2010-05-23 11 views
10

Wie kann ich eine lokale XML-Datei im Assets-Ordner mit Pull-Parser analysieren? Ich kann den Pull-Parser nicht zur Arbeit bringen. Es löst immer eine Ausnahme aus. Ich denke, ich kann den Pfad zu der Datei nicht abrufen oder eine Verbindung zu der Datei herstellen.xml Pull-Parser Assets xml

+0

würden Sie Parser andere betrachten als Ziehen hilft? –

Antwort

22

mixm,

ich mit verschiedenen Möglichkeiten, wurde liebäugelt eine lokale Datei von beiden ‚Assets‘ zu laden und ‚res‘, aber Ihre Frage zu beantworten, wie Fragen (wie sonst niemand zu haben scheint):

Zuerst entweder sicherstellen, dass Ihre XML vor dem Test gültig ist oder Validierung deaktivieren, dies ist, wie Sie das tun können und einen Pull-Parser zur gleichen Zeit instanziiert:

try { 
     XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
     factory.setValidating(false); 
     XmlPullParser myxml = factory.newPullParser(); 

dann die XML-Datei öffnen und legen Sie als Eingabe in Ihren Pull-Parser:

 InputStream raw = getApplicationContext().getAssets().open("simple.xml"); 
     myxml.setInput(raw, null); 

Jetzt Setup Ihre Pull-Schleife (oder eine andere, davon ab, ob Sie ziehen oder nicht wollen latenten, dass Ihr Design-Entscheidungen ist:

 int eventType = myxml.getEventType(); 
     while(eventType != XmlPullParser.END_DOCUMENT) { 
      if(eventType == XmlPullParser.START_DOCUMENT) { 

       Log.d(MY_DEBUG_TAG, "In start document"); 
      } 
      else if(eventType == XmlPullParser.START_TAG) { 
       Log.d(MY_DEBUG_TAG, "In start tag = "+myxml.getName()); 
      } 
      else if(eventType == XmlPullParser.END_TAG) { 
       Log.d(MY_DEBUG_TAG, "In end tag = "+myxml.getName()); 

      } 
      else if(eventType == XmlPullParser.TEXT) { 
       Log.d(MY_DEBUG_TAG, "Have text = "+myxml.getText()); 
      } 
      eventType = myxml.next(); 
     } 
    } catch (XmlPullParserException e) { 

Notiere die myxml.getEventType(), müssen Sie dies tun, um das Parse gehen und handhaben, welche Art Ereignisse Sie ziehen. Hinweis: Catch-Blöcke zur besseren Lesbarkeit weggelassen.

die oben Getestet auf 2.1, hoffe, es -Frank