如何使用getResources()。getXml

时间:2011-12-20 17:04:37

标签: android

我正在尝试使用getResources()。getXml,以便我可以访问“res”文件夹中的XML文件。显然,从我读过的内容来看,我需要这样的东西:

XmlPullParser xpp = context.getResources().getXml(R.xml.encounters);

所以我把它放入,我也导入了“android.content.Context”

但我一直在'上下文'上收到错误消息: 无法对非静态字段上下文进行静态引用

有没有办法解决这个问题?

以下是我的全部代码:

package t.HelloAndroid;
import java.io.IOException;
import java.io.StringReader;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import android.content.res.XmlResourceParser;
import android.content.Context;
import android.app.Activity;

public class XmlParser  {

public static void main (String args[])
    throws XmlPullParserException, IOException
{

    XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
    factory.setNamespaceAware(true);
    //XmlResourceParser xrp = context.getResources().getXml(R.xml.encounters);
    XmlPullParser xpp = context.getResources().getXml(R.xml.encounters);

    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");
}
}

3 个答案:

答案 0 :(得分:2)

在上下文地点使用您的活动名称。

答案 1 :(得分:1)

确保此语句位于非静态方法中。

答案 2 :(得分:1)

您发布的代码无法使用,因为context仅适用于Android应用中的活动(或类似内容)。只是通过main()调用它不会为您设置正确的上下文(在上面的示例中它甚至是null并且会导致NPE)。