JiBX绑定:从同一java对象中的属性向结构添加值和属性

时间:2015-09-21 15:37:19

标签: java xml jibx

由于我是JiBX的新手,我不知道这是否可能,但我觉得我忽略了一些东西。我试图找到一种方法将两个属性从一个POJO绑定到两个不同方式的相同结构。一个作为结构的值,第二个作为相同结构的属性。

以下示例显示了我打算做的事情。

请记住,此绑定只需要以一种方式工作,从Java到XML。 (绑定将定义为<binding direction="output">

我想要映射的类的简化版本:

public Example(){
    private objectToMap;

    //Constructor, getters and setters go here
}

public ObjectToMap(){
    private String randomProperty;
    private String value = "a";
    private Attribute;

    //Constructor, getters and setters go here
}

public Attribute(){
    private String attribute = "b";

    //Constructor, getters and setters go here
}

我想要生成的XML看起来像这样:

<Example>
    <RandomProperty>randomValue</RandomProperty>
    <ObjectToMapValue attribute="b">a</ObjectToMapValue>
</Example>

这就是我被困的地方:

<binding direction="output">
    <mapping name="Example" class="com.example.pojo.Example">
        <structure field="objectToMap" type="com.example.pojo.ObjectToMap">
            <value name="RandomProperty" field="randomProperty">
            <structure name="ObjectToMapValue" field="value"/>
            <!-- But how to add the attribute? -->
        </structure>
    </mapping>
</binding>

是否可以制作JiBX绑定?

1 个答案:

答案 0 :(得分:0)

让它工作,正如我想的那样,我忽略了一些东西。这就解决了它:

<binding direction="output">
    <mapping name="Example" class="com.example.pojo.Example">
        <structure field="objectToMap" type="com.example.pojo.ObjectToMap">
            <value name="RandomProperty" field="randomProperty">
            <structure name="ObjectToMapValue" field="value">
                <structure field="Attribute"/>
                <value style="text" field="value"> 
            </structure>
        </structure>
    </mapping>
    <mapping class="com.example.pojo.Attribute" abstract="true">
        <value name="attribute" field="attribute" style="attribute">
    </mapping>
</binding>