2016-03-02 29 views
0

我使用XMLPullParser閱讀資產文件夾中的本地XML文件中使用XMLPullParser,本教程的代碼是Android開發者網站:如何在本地文件

鏈接: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

喜,謝謝你回覆我欣賞它的問題!然而,這使我略微困惑,如果我使用XMLResourceParser對象,錯誤'targetContext符號不被識別'是否有更新版本的方法?我還可以在xpp.setinput中使用資源分析器,還是僅使用資源分析器來查詢xml文件?再次感謝,jack –

+0

嘗試getContext()。您的示例來自www.XmlPull.org文檔,並不是android代碼。如果你創建一個小的android應用程序,那麼它將有一個上下文和一個資源文件夾。 – Bob

+0

是的,你會用一行代替示例的前4行。 – Bob