Я получил файл связывания XJB, в котором я хочу заменить ВСЕ даты на java.util.Date, и я хотел бы, чтобы один конкретный элемент (с именем 'MyElementName') расширил мой пользовательский класс:
My XJB file:
<jaxb:bindings xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
jaxb:version="2.0">
<!-- replace JAXBElement with real object where nillable="true" and minOccurs="0" -->
<jaxb:globalBindings generateElementProperty="false">
<!-- replace all dates with java.util.Date -->
<jaxb:javaType xmlType="xsd:dateTime" name="java.util.Date"
parseMethod="cz.i.sdp.nsessapi.util.DataTypeConverter.parseDateTime"
printMethod="cz.i.sdp.nsessapi.util.DataTypeConverter.printDateTime"/>
<jaxb:javaType xmlType="xsd:date" name="java.util.Date"
parseMethod="cz.i.sdp.nsessapi.util.DataTypeConverter.parseDateTime"
printMethod="cz.i.sdp.nsessapi.util.DataTypeConverter.printDateTime"/>
<jaxb:javaType xmlType="xsd:time" name="java.util.Date"
parseMethod="cz.i.sdp.nsessapi.util.DataTypeConverter.parseDateTime"
printMethod="cz.i.sdp.nsessapi.util.DataTypeConverter.printDateTime"/>
</jaxb:globalBindings>
<!-- Only element with name 'MyElementName' should extend
<jaxb:bindings schemaLocation="mySchema.xsd">
<jaxb:bindings node="//xs:element[@name='MyElementName']">
<xjc:superClass name="net.test.Whatever"/>
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>
Улучшения XJC будут игнорироваться, если они не находятся внутри <globalBindings>
. Но тогда все сгенерированные классы расширят мой пользовательский класс, и я не хочу этого.
Есть ли способ указать глобальные привязки вместе с привязками "scoped"?
В здесь упоминается «Глобальная область», «Область схемы», «Область определения» и «Область компонента», и они говорят «определенно, объявления в верхней части пирамиды наследуют и заменяют объявления ниже их».