Estoy utilizando el plugin de maven maven-jaxb2-plugin para generar POJOs de un archivo de Esquema XSD.
Esto funciona bien. La única cosa, eso es lo que realmente me molesta es, que el esquema xml enumeraciones no se asignan en Java de Tipo Enum.
Mi plugin de maven es la generación de java pojos de un archivo llamado schemachooser.xsd
schemachooser.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:sch="http://www.ascc.net/xml/schematron"
targetNamespace="http://schema.something" elementFormDefault="qualified"
version="1.0" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jaxb:extensionBindingPrefixes="xjc" jaxb:version="1.0">
<xs:annotation>
<xs:appinfo>
<jaxb:globalBindings generateIsSetMethod="true" fixedAttributeAsConstantProperty="true">
<xjc:serializable />
</jaxb:globalBindings>
<jaxb:schemaBindings>
<jaxb:bindings node="//xsd:element[@name='ElementName']/xsd:simpleType">
<jaxb:typesafeEnumClass name="MyEnumType" />
</jaxb:bindings>
</jaxb:schemaBindings>
</xs:appinfo>
</xs:annotation>
<xs:include schemaLocation="myNormalSchema.xsd" />
</schema>
Genere los archivos, pero no la «nueva» Clase Enum «MyEnumType». Estoy utilizando los enlaces de malo?
Si quieres mantener el JAXB anotaciones separadas del esquema XML, entonces usted necesita utilizar un JAXB archivo de enlaces:
bindings.xml
myNormalSchema.xsd
A continuación se muestra un ejemplo de esquema XML que una ingeniería inversa a partir de su pregunta:
XJC Llamada
MyEnumType
Una de las clases generadas es una enumeración llamada
MyEnumType
.Raíz
También la Raíz de la clase se genera con el
isSet
método:Ejemplos