2016-03-02 2 views
0

Я использую XMLPullParser читать локальный файл XML в папке активов, код для обучающей программы на андроид сайт разработчиков:Как использовать XMLPullParser на локальный файл

ссылка: http://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html

код:

import java.io.IOException; 
import java.io.StringReader; 

import org.xmlpull.v1.XmlPullParser; 
import org.xmlpull.v1.XmlPullParserException; 
import org.xmlpull.v1.XmlPullParserFactory; 

public class SimpleXmlPullApp 
    { 

public static void main (String args[]) 
    throws XmlPullParserException, IOException 
{ 
    XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
    factory.setNamespaceAware(true); 
    XmlPullParser xpp = factory.newPullParser(); 

    xpp.setInput(new StringReader ("<foo>Hello World!</foo>")); 
    int eventType = xpp.getEventType(); 
    while (eventType != XmlPullParser.END_DOCUMENT) { 
     if(eventType == XmlPullParser.START_DOCUMENT) { 
      System.out.println("Start document"); 
     } else if(eventType == XmlPullParser.START_TAG) { 
      System.out.println("Start tag "+xpp.getName()); 
     } else if(eventType == XmlPullParser.END_TAG) { 
      System.out.println("End tag "+xpp.getName()); 
     } else if(eventType == XmlPullParser.TEXT) { 
      System.out.println("Text "+xpp.getText()); 
     } 
     eventType = xpp.next(); 
    } 
    System.out.println("End document"); 
    } 
}` 

Я понимаю, что StringReader является то, что я должен заменить, но то, что я заменить его, так что я могу использовать локальный файл?

ответ

1

Если файл XML в папке активов, он может быть получен следующим образом:

Использование context.getAssets().openXmlResourceParser(String filename). Он возвращает XmlResourceParser, который представляет собой реализацию XmlPullParser в их примере. Если файл находится в assets/subfolder/file.xml, параметр имени файла будет "subfolder/file.xml".

Другая вещь, чтобы рассмотреть, что вы можете поместить его в папку XML под ресурсами и получить его в качестве R.xml.filename:

res/xml/filename.xml 

<?xml version="1.0" encoding="utf-8"?> 
<credits> 
    <credit>one</credit> 
    <credit>two</credit> 
</credits> 

В Android активность:

final XmlResourceParser parser = getContext().getResources().getXml(R.xml.filename); 
+0

Hi , спасибо за ответ на вопрос, который я ценю! Однако это немного смутило меня. Если я использую объект XMLResourceParser, символ «targetContext» ошибки не распознается. Существует ли более новая версия метода? Также могу ли я использовать парсер ресурсов в файле xpp.setinput или просто использовать парсер ресурсов для запроса XML-файла? Еще раз спасибо, jack –

+0

Попробуйте getContext(). Ваш пример из документации на www.XmlPull.org и не является кодом для Android. Если вы создадите небольшое приложение для Android, оно будет иметь папку контекста и ресурсов. – Bob

+0

Да, вы бы заменили первые 4 строки примера на одну строку. – Bob