为什么我会得到这种结构?我本来期待测验 - >问题 - >和两个问题元素,而不是两个问题元素?
@XmlRootElement
public class Quiz {
private List<Question> questions;
public Quiz() {
questions = new ArrayList<Question>();
}
public List<Question> getQuestions() {
return questions;
}
public void setQuestions(List<Question> questions) {
for (Question question : questions) {
addQuestion(question);
}
}
public void addQuestion(final Question question) {
if (!(questions.contains(question))) {
questions.add(question);
}
}
public void removeQuestion(final Question question) {
if (questions.contains(question)) {
questions.remove(question);
}
}
public int numberOfQuestions() {
return questions.size();
}
}
问题:
@XmlRootElement
public class Question extends AbstractModel {
}
<quiz><questions></questions><questions></questions></quiz>
答案 0 :(得分:3)
默认情况下,JAXB(JSR-222)实现不提供分组元素。您可以使用@XmlElementWrapper
获取一个。
@XmlElementWrapper
@XmlElement(name="question")
public List<Question> getQuestions() {
return questions;
}
了解更多信息
答案 1 :(得分:2)
我怀疑你的收藏(即 - “getQuestions”)没有很好地注释。
如果您打算使用Question对象列表或扩展Question的对象,则应考虑使用XmlRefElement(例如,
如果您有StudentQuestion和LecturerQuestion扩展问题,并且您希望将这些对象添加到集合中)
如果你想把“问题”的“包装”放在“问题”上,即 - 看起来像这样的XML:
<Questions>
<Question></Question>
<Question></Questions>
</Question>
您应该使用@XmlElementWrapper(name="Questions")