Привет, ребята, у меня проблема, когда я пытаюсь разобрать элемент xml с тем же тегом
<question id="0">
<text> Who is the first President of the United States of America? </text>
<image> http://liisp.uncc.edu/~mshehab/api/figures/georgewashington.png </image>
<choices>
<choice answer="true">George Washington</choice>
<choice>Thomas Jefferson</choice>
<choice>James Monroe</choice>
<choice>John Adams</choice>
</choices>
</question>
Я могу разобрать все остальные, но я могу только разобрать последний "выбор",
вот часть кода для синтаксического анализа
public void endElement(String uri, String localName, String qName)
throws SAXException {
if(localName.equals("text")){
question.setText(xmlInnerText.toString().trim());
} else if(localName.equals("image")){
question.setImageURL(xmlInnerText.toString().trim());
} else if(localName.equals("choices")){
if(localName.equals("choice")){
question.setChoice(xmlInnerText.toString().trim());
}
} else if(localName.equals("question")){
questions.add(question);
}
xmlInnerText.setLength(0);
}
Я предполагаю, что сейчас происходит то, что вы устанавливаете выбор, но затем вы снова устанавливаете его (заменяете его). Таким образом, вы получаете только последнее.
Вы должны добавить каждый выбор в список, а затем question.setChoices(choices)
где choices
является списком. (Когда вы получаете "выбор", вы делаете choices.add(xmlInnetText.toString().trim());
Редактировать: также как @rmlan сказал, что, похоже, вы никогда не доберетесь до "выбора". Вам не нужно делать, if
внутри "выборов", if
. "Выбор", if
может быть на том же уровне, что и другие, if
s. Помимо этого факта ответ выше истины: вам нужен Список, чтобы сохранить каждый "выбор".
Редактировать2:
Вам нужно что-то вроде этого:
(...)
} else if(localName.equals("choice")) {
choices.add(setChoice(xmlInnerText.toString().trim());
} else if(localName.equals("choices")){
question.setChoices(choices);
}
(...)