2010-05-23 27 views
10

Çekirdek ayrıştırıcısı kullanarak varlıklar klasöründe yerel bir XML dosyasını nasıl ayrıştırabilirim? Çalıştırıcıyı çalışmak için çekemiyorum. Her zaman bir istisna atar. Sanırım dosya yolunu veya dosyaya bağlanamıyorum.xml ayrıştırıcı öğeleri al xml

+0

Eğer çekin daha ayrıştırıcılar diğer dikkate alacağını umut olur? –

cevap

22

mixm, (kimsenin var gibi görünüyor gibi) sordu ben hem 'varlık' ve 'res' dan yerel bir dosya yüklemek için, ancak soruyu cevaplamak için çeşitli şekillerde oynuyordu

:

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

Sonra xml dosyasını açın ve şekilde ayarlayın:

İlk olarak, XML testten önce geçerli olduğundan emin olun veya doğrulama kapatmak ya bu bunu ve aynı zamanda bir çekme ayrıştırıcı örneğini nasıl olduğunu Çekmece ayrıştırıcınıza giriş:

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

Şimdi kurulum çekme çengeli (ya da, sen çekerek veya ertelenmiş do isteyip bağlıdır, bu senin tasarım kararları var:

 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) { 

Not myxml.getEventType(), sen almak için bunu yapmak gerekir ayrıştırma, hangi tür olayları çektiğinizi ele alır ve işler. Not: okunabilirlik için atlanmış blokları atın.

, 2.1 yukarıda Test o -Frank