XML-представление дерева разговоров в виде объектов Java - PullRequest
3 голосов
/ 09 ноября 2011

У меня есть вопрос о рекомендуемом способе отображения дерева разговоров на объекты Java.Я смотрю на что-то вроде следующего:

<conversation>
    <npcAction id="1" text="Some action text" userChoice="2" />
    <userChoice id="2">
        <availableAction>3</availableAction>
        <availableAction>4</availableAction>
    </userChocie>
    <userAction id="3" text="Some more action text." npcChoice="5" />
    <userAction id="4" text="Different action text." npcChoice="5" />
    <npcChoice id="5">
        <availableAction>6</availableAction>
        <availableAction>7</availableAction>
    </npcChoice>
    <npcAction id="6" text="Still more action text." userChoice="8" />
    <npcAction id="7" text="Still more action text." userChoice="8" />
    <userChoice id="8" />
</conversation>

Когда я представляю, как я хочу взаимодействовать с этим программно, я чувствую, что хочу сделать что-то вроде этого:

public class UserAction {
    String text;
    NpcChoice npcChoice;
}
public class NpcAction {
    String text;
    UserChoice userChoice;
}
public class UserChoice {
    ArrayList<UserAction> actions;
}
public class NpcChoice {
    ArrayList<NpcAction> actions;
}

В реализации NpcAction и UserAction имеют другие конкретные значения, которые их различают, но для простоты я обрезал их.

Мой вопрос заключается в том, существует ли простой способ связать эти представления вместе.Я мог бы создать некоторое промежуточное объектное представление данных xml и затем повторно сопоставить их вручную в Java, но у меня такое ощущение, что я упускаю что-то в отношении лучшего способа представления этой информации.Любые предложения будут высоко оценены!

1 Ответ

3 голосов
/ 09 ноября 2011

Вы можете сделать что-то вроде следующего:

UserAction

public class UserAction {
    @XmlID 
    @XmlAttribute
    String id;

    @XmlAttribute String text;
    @XmlIDREF NpcChoice npcChoice;
}

NpcAction

public class NpcAction {
    @XmlID 
    @XmlAttribute
    String id;

    String text;
    UserChoice userChoice;
}

UserChoice

public class UserChoice {
    @XmlID 
    @XmlAttribute
    String id;

    @XmlElement(name="availableAction")
    ArrayList<UserAction> actions;
}

NpcChoice

public class NpcChoice {
    @XmlID 
    @XmlAttribute
    String id;

    @XmlElement(name="availableAction")
    ArrayList<NpcAction> actions;
}

Для получения дополнительной информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...