gpt4 book ai didi

Android - 将 XML 解析为 ArrayList

转载 作者:行者123 更新时间:2023-11-29 21:00:40 25 4
gpt4 key购买 nike

我在解析和显示来自一个非常简单的 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);

}

}

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

提前致谢,克劳迪奥

最佳答案

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

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

主要思想是使用 next() 方法在整个文档中推进解析器。

关于Android - 将 XML 解析为 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26225041/

25 4 0