Android-将XML解析为ArrayList

Android-将XML解析为ArrayList,android,android-activity,Android,Android Activity,我在解析和显示一个非常简单的xml文件中的信息时遇到问题 首先,我将xml文件存储在res/xml文件夹中。在文件夹中,我有一个名为jokes.xml的xml文件,该文件的内容如下: <?xml version="1.0" encoding="utf-8"?> <resources> <joke>This is a good joke.</joke> <joke>This is a very nice good great jo

我在解析和显示一个非常简单的xml文件中的信息时遇到问题

首先,我将xml文件存储在res/xml文件夹中。在文件夹中,我有一个名为jokes.xml的xml文件,该文件的内容如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <joke>This is a good joke.</joke>
  <joke>This is a very nice good great joke.</joke>
  <joke>Oh Yeah!</joke>
</resources>
public class MainActivity extends Activity {

private TextView texto;
private int i = 0;
private String[] arrayJokes;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    texto = (TextView) findViewById(R.id.textView1);

    XmlResourceParser joke = getResources().getXml(R.xml.jokes);

    try {
        while( joke.getEventType() != XmlResourceParser.END_DOCUMENT ){
            if( joke.getEventType() == XmlResourceParser.START_TAG ){
                String s = joke.getName();

                if( s.equals("joke")){
                    arrayJokes[i] = joke.getAttributeValue(null, "joke");
                    i++;
                }
            }
        }
    } catch (XmlPullParserException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    //takes random id from the array
    Random generator = new Random();
    int rnd = generator.nextInt(arrayJokes.length);

    String j = arrayJokes[rnd];
    texto.setText(j);

}

}
问题是我只得到一张空白页。知道我做错了什么吗

提前感谢,,
Cláudio

你可以像这样解析你的笑话:

private ArrayList<String> parseJokes() {
            ArrayList<String> jokes = new ArrayList<String>();
            XmlResourceParser parser = getResources().getXml(R.xml.jokes);


            try {
                int eventType=parser.getEventType();
                while (eventType!=XmlPullParser.END_DOCUMENT) {
                    if(eventType==XmlPullParser.START_TAG){
                        if (parser.getName().equals("joke")) {
                            jokes.add(parser.nextText());
                        }
                    }

                    eventType= parser.next();
                }
            } catch (XmlPullParserException | IOException e) {
                Log.e("XmlPullParserException", e.toString());
            }
            parser.close();
            return jokes;
        }
private ArrayList parsejones(){
ArrayList笑话=新建ArrayList();
XmlResourceParser parser=getResources().getXml(R.xml.com);
试一试{
int eventType=parser.getEventType();
while(eventType!=XmlPullParser.END_文档){
if(eventType==XmlPullParser.START_标记){
if(parser.getName().equals(“笑话”)){
add(parser.nextText());
}
}
eventType=parser.next();
}
}捕获(XmlPullParserException | IOE异常){
e(“XmlPullParserException”,e.toString());
}
parser.close();
回敬笑话;
}
主要思想是使用next()方法在整个文档中推进解析器