JiBX привязка - корневой объект расширяет объект

Можно ли даже связать корневой объект с суперполями?

У меня довольно сложная сущность (сущности) для привязки. Я уже потерян с этим:)

Это моя ситуация с кодом:

public class CoreRestWrapper {
    private Integer page;
    private Integer perPage;
}

public class UserWrapper extends CoreRestWrapper {
    private Collection<UserCVO> users;
}

public class UserCVO  {
    private UserVO userVO;
    private Map<String, UserMeta> meta;
}

public class UserVO extends BaseVO {
    //nothing here
}

public class BaseVO {
    private Integer id;
    private String mainName;
}

public class UserMeta extends Meta {
    //nothing here
}

public class Meta {
    private String key;
    private Object value;
    private String type; //String, Integer, Boolean, Date
}

UserWrapper - мой корневой объект. Я хотел бы, чтобы мой ответ xml выглядел так:

<users>
    <page>1</page>
    <perPage>2</perPage>
    <user>
        <id>1</id>
        <main>test</main>
        <meta type="String" key="wtf">just for fun</meta>
        <meta type="Integer" key="age">99</meta>
    </user>
    <user>
        <id>2</id>
        <main>test</main>
        <meta type="String" key="wtf">fooooo</meta>
        <meta type="Integer" key="age">101</meta>
    </user>
</users>

Или, может быть, даже <users page="1" perPage="2"> а потом просто пользовательские теги...

Это вообще возможно (для новичка в JiBX справиться)?

1 ответ

Решение

Вы можете, но вы должны определить отображения для всего в иерархии. Я столкнулся с тем же. Это оказалось достаточно сложным, и я обнаружил, что проще создать объект-обертку JIBX для сопоставления (например, с UserJibxWrapper), а затем написать небольшой код для сопоставления этого с внутренними объектами.

Однако в вашем случае сами объекты довольно просты, поэтому вы можете сгенерировать все необходимые отображения. Я бы работал сверху вниз. Возьмите базовый класс и сопоставьте его, получите работу по отображению, затем добавьте подкласс и измените ваши отображения по мере необходимости, и продолжайте работать таким образом. Поскольку JIBX нужно знать все в иерархии для сопоставления, проще сопоставить сверху вниз, чем снизу вверх.

Другие вопросы по тегам