私のクイズの質問のリストを持つquestions.xmlファイルがあります。私はこれを自分のプログラムの質問銀行に読み込もうとしています。私は以下のメソッドを書いています:AndroidでXMLファイルを読む
// Creates the QuestionBank according to user requirements
public ArrayList<Question> createQuestionBank(String diff) {
int eventType = -1;
boolean FoundQuestions = false;
QuestionBank = new ArrayList<Question>();
// Find Question records from XML
System.out.println("check 1");
while (eventType != XmlResourceParser.END_DOCUMENT) { // Keep reading until the end of the xml file
System.out.println("check 2");
if (eventType == XmlResourceParser.START_TAG) {
System.out.println("check 3");
String Name = questionList.getName();
if (Name.equals("question")){ // Check whether the tag found is the one for question
System.out.println("check 4");
// Check difficulty of question
String diffCheck = questionList.getAttributeValue(null, "difficulty");
if (diff.equals("Any") || diff.equals(diffCheck)){
FoundQuestions = true;
System.out.println("check 5");
createandaddquestion();
System.out.println("check 6");
}
}
try {
eventType = questionList.next();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return QuestionBank;
}
私はいくつかの出力文を設定して、自分のプログラムがどこに間違っていたのかを特定しました。この方法は、CHECK2の無限のサイクルを出力し、決して3をチェックするために進行し、その声明で立ち往生されています
if (eventType == XmlResourceParser.START_TAG)
私は私が他の場所で発見したと完全に何が起こっているか理解していないいくつかのコードを適応しています。私の理解は、このステートメントは、これが私の質問入力の開始を示す質問タグであるかどうかを確認するために進めるタグの開始部分を見つけることです。しかし、まさにeventTypeは何ですか?明らかに整数ですが、タグが見つかったときにXMLResourceParser.START_TAGが整数を返すのはなぜですか?確かにブール値であることが理にかなっていますか?上記の投稿から、私はあなたにアンドロイドにとって非常に新しいことを強調する必要はないと思いますので、気をつけてください!前もって感謝します。
+1おそらくPearsonartphotoはおそらく彼の前提です。 SAXパーサーを使用することは、少なくとも初期のバージョンでは、Android上ではるかに効率的です。ファイルを解析するのに20秒かかります。 –
@MarkGjølThanks Mark!私は最終的なプログラムがどれくらい安定しているかについて非常に心配しています。だから今はSAXパーサを探しています。 – user1058210