В моей схеме у меня есть некоторые типы, которые просто расширяют простой тип XSD (int или string). JAXB создает отдельный класс java для такого типа. Я хочу отказаться от этого промежуточного класса и настроить JAXB на использование примитивов, где это возможно (например, заменить CountryType
на java.lang.String
и DocumentType
с int
или lava.lang.Integer
). Например, для данного XSD было бы неплохо иметь DestinationType.setDocumentType(int)
и List<String> StatesType.getCountry()
. Я рад написать для него тип an adapter, но похоже, что поддерживаются только преобразования из примитивных типов XML. Может быть, можно сделать преобразование типа для каждого объекта? Пожалуйста, дайте любой пример настройки привязки JAXB, который может помочь.JAXB замена сложного типа примитивным типом
<?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>
Может это преобразование применяются без нарушения совместимости сериализованного XML? –
@dma_k - Да, представления XML для обоих типов одинаковы. –