【问题标题】:JiBX binding - root object extends an objectJiBX 绑定 - 根对象扩展对象
【发布时间】:2009-10-17 12:43:43
【问题描述】:

甚至可以将根对象与超级字段绑定吗?

我有相当复杂的实体(实体)要绑定。我已经迷失了:)

这是我的代码情况:

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>

或者甚至可能是&lt;users page="1" perPage="2"&gt; 然后只是用户标签...

这甚至可能吗(对于 JiBX 的初学者来说)?

【问题讨论】:

    标签: java xml binding jibx


    【解决方案1】:

    您可以,但您必须为层次结构中的所有内容定义映射。我遇到了同样的事情。它最终变得足够复杂,以至于我发现只创建一个 JIBX 包装器对象以映射到(例如 UserJibxWrapper),然后编写一些代码将其映射到内部对象中更简单。

    不过,在您的情况下,对象本身相当简单,因此您可能能够生成所需的所有映射。我会自上而下地工作。获取基类并对其进行映射,使映射工作,然后添加一个子类并根据需要更改您的映射,并继续以这种方式工作。由于 JIBX 需要了解要映射的层次结构中的所有内容,因此自顶向下映射比自底向上映射更容易。

    【讨论】:

    • 我做的和你写的完全一样。我只需要两天时间来计算 JiBX 映射绑定和服装编组。是的 - 我的问题是我开始自下而上,这就是我迷路的原因:)
    • 恭喜:)。这当然不容易,但是一旦您了解了映射中的一些奇怪之处,它就是一种处理 XML 到对象转换的非常好的方法。在某些方面,它让我想起了创建 Hibernate 映射的学习曲线。
    猜你喜欢
    • 1970-01-01
    • 2019-04-08
    • 1970-01-01
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多