Dans mon schéma j'ai quelques types qui étendent simplement un type XSD simple (int ou string). JAXB crée une classe Java distincte par type. Je souhaite supprimer cette classe intermédiaire et configurer JAXB pour utiliser des primitives lorsque cela est possible (par exemple, remplacer CountryType
par java.lang.String
et DocumentType
par int
ou lava.lang.Integer
). Par exemple, pour un XSD donné, il serait bon d'avoir DestinationType.setDocumentType(int)
et List<String> StatesType.getCountry()
. Je suis heureux d'écrire an adapter à l'échelle du type pour cela, mais il semble que seules les conversions à partir de types XML primitifs sont prises en charge. Peut-être qu'il est possible de faire la conversion par type de propriété? S'il vous plaît, donnez un exemple de personnalisation de liaison JAXB, qui peut aider.Substitution JAXB de type complexe avec le type primitif
<?xml version="1.0" encoding="UTF-8"?>
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:exch="http://www.mycompany.org/exchange"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
targetNamespace="http://www.mycompany.org/exchange"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<complexType name="countryType">
<simpleContent>
<extension base="string"/>
</simpleContent>
</complexType>
<complexType name="statesType">
<sequence maxOccurs="unbounded">
<element name="country" type="exch:countryType"/>
</sequence>
</complexType>
<complexType name="documentType">
<simpleContent>
<extension base="integer"/>
</simpleContent>
</complexType>
<complexType name="destinationType">
<sequence>
<element name="states" type="exch:statesType" maxOccurs="1"/>
<element name="document-type" type="exch:documentType" minOccurs="1" maxOccurs="1"/>
</sequence>
</complexType>
</schema>
cette transformation peut être appliquée sans casser la compatibilité XML sérialisé? –
@dma_k - Oui, les représentations XML pour les deux types sont les mêmes. –