JAXB属性的多重映射

时间:2011-11-12 21:54:08

标签: java xml jaxb jaxb2 unmarshalling

我只是在改变过去的设计错误,但希望保持软件的向后兼容性。为此,我需要一些方法将两种xml文件映射到一个java bean中。可以在一个属性/元素上使用两个JAXB注释来完成吗?我知道编组会很模糊,但解组可能会起作用。这有什么好办法吗?

p.s。:我不关心编组。

1 个答案:

答案 0 :(得分:1)

您可以映射两次:

  • 第一次使用注释
  • 第二次使用XML资源。

或者只是两个XML映射而不是注释。

对于XML资源映射,有许多选项:

使用Annox,您可以使用具有不同扩展名的XML地图资源轻松映射两次,例如MyClass.ann1.xmlMyClass.ann2.xml。 (默认情况下为MyClass.ann.xml,但调整很简单。)

以下是映射的示例:

<class xmlns="http://annox.dev.java.net" xmlns:annox="http://annox.dev.java.net" xmlns:jaxb="http://annox.dev.java.net/javax.xml.bind.annotation">

    <jaxb:XmlAccessorType value="FIELD"/>
    <jaxb:XmlType name="" propOrder="productName quantity usPrice comment shipDate"/>
    <field name="productName">
        <jaxb:XmlElement required="true"/>
    </field>
    <field name="usPrice">
        <jaxb:XmlElement name="USPrice" required="true"/>
    </field>
    <field name="shipDate">
        <jaxb:XmlSchemaType name="date"/>
    </field>
    <field name="partNum">
        <jaxb:XmlAttribute required="true"/>
    </field>
</class>