大家好我在尝试解析具有相同标记的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);
}
答案 0 :(得分:1)
我想现在发生的事情是你正在设置选择,但是你再次设置它(替换它)。所以你只能得到最后一个。
您必须将每个选项添加到列表中,然后question.setChoices(choices)
其中choices
是列表。 (当你得到一个&#34;选择&#34;你做choices.add(xmlInnetText.toString().trim());
编辑:同时@rmlan表示,您似乎无法选择&#34;选择&#34;。你不需要在&#34;选择中做if
&#34; if
。 &#34;选择&#34; if
可以与其他if
处于同一级别。除了这个事实,上面的答案是正确的:你需要一个List来保存每个&#34;选择&#34;。
<强> EDIT2 强>:
你需要这样的东西:
(...)
} else if(localName.equals("choice")) {
choices.add(setChoice(xmlInnerText.toString().trim());
} else if(localName.equals("choices")){
question.setChoices(choices);
}
(...)