2

なぜこの構造を取得するのですか? クイズ-->質問-->と2つの質問要素ではなく、2つの質問要素を期待していたでしょうか?

@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>
4

2 に答える 2

3

デフォルトでは、JAXB(JSR-222)実装はグループ化要素を提供しません。あなたはそれを手に入れるために使うことができます@XmlElementWrapper

@XmlElementWrapper
@XmlElement(name="question")
public List<Question> getQuestions() {
    return questions;
}

詳細については

于 2012-11-17T13:02:27.313 に答える
2

あなたのコレクション (つまり "getQuestions") に適切な注釈が付けられていないと思われます。
Question オブジェクトまたは Question を拡張するオブジェクトのリストを作成する場合は、XmlRefElement の使用を検討する必要があります (たとえば、
StudentQuestion と LecturerQuestion で Question を拡張し、これらのオブジェクトをコレクションに追加する必要がある
場合)。 「質問」の上に「質問」の「ラッパー」を配置するには、つまり、次のような XML を使用します。

<Questions>
   <Question></Question>
   <Question></Questions>
</Question>

コレクションに注釈を付ける必要があります@XmlElementWrapper(name="Questions")

于 2012-11-17T12:56:17.843 に答える