Generar clases a partir de XSD en NetBeans

En el presente tutorial veremos como podemos generar las clases requeridas por esquema XSD, como sabes un archivo .xsd define las reglas que se deben cumplir para que un documento XML sea válido, por ejemplo, el orden de los elementos, los tipos y patrones de los mismos, entre otras cosas, lo que haremos será tomar este archivo he indicarle a NetBeans que genere las clases apropiadas para el mismo.

Nuestro archivo de ejemplo: test.xsd

<?xml version="1.0" ?>

<xs:schema version="1.0"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified">
    
    <xs:element name="person" type="PersonType" />
    
    <xs:simpleType name="GenderType">
        <xs:restriction base="xs:string">
            <xs:length value="1" />
            <xs:enumeration value="F" />
            <xs:enumeration value="M" />
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="PersonType">
        <xs:sequence>
            <xs:element name="id" type="xs:string" />
            <xs:element name="name" type="xs:string" />
            <xs:element name="age" type="xs:string" />
            <xs:element name="gender" type="GenderType" />
        </xs:sequence>
    </xs:complexType>
    
</xs:schema>

Para agregarlo a nuestro proyecto NetBeans 8.2 damos clic derecho sobre el mismo, seleccionaremos la opción New | Other…

En la sección XML seleccionamos JAXB Binding de la siguiente manera:

JAXB binding en netbeans

En la siguiente ventana debemos darle un nombre al binding e indicar la ubicación del archivo xsd, puede estar el nuestro sistema local o en un sitio remoto, las demás opciones son de configuración.

Generar Java class desde XSD

En el campo Package Name indicamos el paquete que deseemos usar para guardar las clases generadas, al terminar presionamos Finish y luego Clean and Build para generar las clases, al finalizar tendremos esto:

Netbeans XSD Clases

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "PersonType", propOrder = {
    "id",
    "name",
    "age",
    "gender"
})
public class PersonType {

    @XmlElement(required = true)
    protected String id;
    @XmlElement(required = true)
    protected String name;
    @XmlElement(required = true)
    protected String age;
    @XmlElement(required = true)
    protected GenderType gender;

    //getter y setter omitidos...

}

Solucionar problema de codificación UTF-8

Si al tratar de generar las respectivas clases se genera el siguiente error:

error: unmappable character for encoding UTF-8

Para solucionarlo debes cambiar la codificación del proyecto, para hacerlo debes hacer clic derecho sobre el proyecto y seleccionar Properties, en la ventana que aparece ubica la categoría Source y cambia la codificación a windows-1250, de este modo:

cambiar codificacion netbeans

Comentarios

Temas relacionados

Entradas populares de este blog

tkinter Grid

tkinter Canvas

Histogramas OpenCV Python

Python Binance API