为什么我会得到这种结构?我本来期望测验 - >问题 - >和两个问题元素,而不是两个问题元素?
@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>
2 回答
默认情况下,JAXB(JSR-222)实现不提供分组元素 . 您可以使用
@XmlElementWrapper
获取一个 .For More Information
我怀疑你的收藏品(即 - "getQuestions")没有注释好 .
如果您打算使用Question对象列表或扩展Question的对象,则应考虑使用XmlRefElement(例如,
如果您有StudentQuestion和LecturerQuestion扩展问题,并且您希望将这些对象添加到集合中)
如果你想将"Questions"的"Questions"放在"Question"上,那么看起来像是这样的XML:
您应该使用
@XmlElementWrapper(name="Questions")
注释该集合