我正在使用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是我必须要替换的,但是我该如何替换它以便我可以使用本地文件?
答案 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);