Возвращаясь к предыдущему вопросу - вы можете изменить схему xml и добавить какой-нибудь тег <nextquestion>
к ответам. Тогда эквивалентный XML-документ будет:
<decision>
<question id="0">
<questionText>What type is your OS?</questionText>
<answer id="0">
<answerText>windows</answerText>
</answer>
<answer id="1">
<answerText>linux</answerText>
</answer>
<answer id="2">
<answerText>mac</answerText>
</answer>
</question>
<question id="1">
<questionText>What are you looking for?</questionText>
<answer id="0">
<answerText>table</answerText>
<!-- NEW TAG HERE -->
<nextquestion refid="3" />
</answer>
<answer id="1">
<answerText>chair</answerText>
</answer>
<answer id="2">
<answerText>bed</answerText>
</answer>
<answer id="3">
<answerText>cloth</answerText>
</answer>
</question>
<!-- ALL QUESTIONS ARE CHILDREN OF ROOT WITH UNIQUE ID -->
<question id="3">
<questionText>Which color table you want?</questionText>
<answer id="0">
<answerText>green</answerText>
</answer>
<answer id="1">
<answerText>black</answerText>
</answer>
<answer id="2">
<answerText>pink</answerText>
</answer>
</question>
</decision>
Возможно, вы захотите использовать уникальные идентификаторы и для ответов, или даже повторно использовать модель, если хотите повторно использовать ответы для разных вопросов ( отношение многие ко многим )
А у вас занятия:
public class Question {
private int id;
private String text;
private Set<Answer> answers;
// ...
}
public class Answer {
private int id;
private String text;
private Question nextQuestion;
}
И конечно существует круговая зависимость, но она абсолютно необходима и унаследовала от реальной области моделей.