如何在本地文件上使用XMLPullParser

时间:2016-03-02 21:45:20

标签: java android xml android-studio

我正在使用XMLPullParser来读取assets文件夹中的本地XML文件,该教程的代码位于android开发者网站上:

link: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 个答案:

答案 0 :(得分:1)

如果xml文件位于assets文件夹中,则可以像这样检索它:

使用context.getAssets().openXmlResourceParser(String filename)。它返回XmlResourceParser,这是其示例中XmlPullParser的实现。如果文件位于assets/subfolder/file.xml,则filename参数将为"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);