JAXB несколько отображений для атрибута - PullRequest
2 голосов
/ 13 ноября 2011

Я просто изменяю ошибки дизайна, допущенные в прошлом, но хочу сохранить обратную совместимость моего программного обеспечения.Для этого мне понадобится какой-то способ отобразить два варианта XML-файла в один Java-бин.Можно ли это сделать, используя две аннотации JAXB для одного атрибута / элемента?Я понимаю, что сортировка будет неоднозначной, но сортировка может работать.Есть какой-нибудь хороший способ сделать это?

ps: меня не волнует сортировка.

1 Ответ

1 голос
/ 01 декабря 2011

Вы можете отобразить дважды:

  • первый раз, используя аннотации
  • второй раз, используя ресурсы XML.

Или просто два сопоставления XML вместоаннотаций.

Для сопоставления ресурсов XML есть несколько опций:

С Annox вы можете легко сопоставить дважды, используя ресурсы сопоставления XML с различными расширениями, такими как MyClass.ann1.xml илиMyClass.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>
...