XJC es una herramienta de linea de comandos del compilador de esquemas de JAXB que se puede utilizar para convertir un esquema XML (entre otro tipo de archivos como NG, DTD, WSDL, etc) a representaciones de clase. Las clases se generaran junto a anotaciones del espacio de nombres javax.xml.bind.annotation.*.
El Esquema que utilizaremos se llama MiEsquema.xsd, este esquema lo utilizamos en otro post [Validación de documentos XML con XSD] y es el esquema de un pequeño formulario.
Al ser xjc una herramienta por linea de comandos antes de continuar con el post, se debe asegurar que java este incluida en el PATH del sistema.
Comencemos.
Crea un nuevo archivo XSD en tu pc con el siguiente código y guarda con el nombre MiEsquema.xsd.
<?xml version="1.0"?> <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="formulario"> <xs:complexType> <xs:sequence> <!-- Nombre de usuario --> <xs:element name="nombre" > <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="6" /> <xs:maxLength value="32" /> </xs:restriction> </xs:simpleType> </xs:element> <!-- Edad, solo mayores de 18 años --> <xs:element name="edad"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="18" /> <xs:maxInclusive value="99" /> </xs:restriction> </xs:simpleType> </xs:element> <!-- Correo electonico --> <xs:element name="mail"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[^@]+@[^\.]+\..+"/> </xs:restriction> </xs:simpleType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
Abre un consola de comandos y posicionate en el lugar donde esta tu archivo XSD.
A continuación escribe:
xjc -d src -p org.example MiEsquema.xsd
donde:
Si deseas más información, utiliza el comando x:\>xjc -help para desplegar ayuda en pantalla
Este es el comando básico para la generación de clases java, para ejecutar el comando presiona la tecla [ENTER].
Los archivos generados son:
Archivo Formulario.java generado desde un XSD con la herramienta XJC
package org.example; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; /** * <p>Clase Java para anonymous complex type. * * <p>El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. * * <pre> * <complexType> * <complexContent> * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> * <sequence> * <element name="nombre"> * <simpleType> * <restriction base="{http://www.w3.org/2001/XMLSchema}string"> * <minLength value="6"/> * <maxLength value="32"/> * </restriction> * </simpleType> * </element> * <element name="edad"> * <simpleType> * <restriction base="{http://www.w3.org/2001/XMLSchema}integer"> * <minInclusive value="18"/> * <maxInclusive value="99"/> * </restriction> * </simpleType> * </element> * <element name="mail"> * <simpleType> * <restriction base="{http://www.w3.org/2001/XMLSchema}string"> * <pattern value="[^@]+@[^\.]+\..+"/> * </restriction> * </simpleType> * </element> * </sequence> * </restriction> * </complexContent> * </complexType> * </pre> * * */ @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = { "nombre", "edad", "mail" }) @XmlRootElement(name = "formulario") public class Formulario { @XmlElement(required = true) protected String nombre; protected int edad; @XmlElement(required = true) protected String mail; /** * Obtiene el valor de la propiedad nombre. * * @return * possible object is * {@link String } * */ public String getNombre() { return nombre; } /** * Define el valor de la propiedad nombre. * * @param value * allowed object is * {@link String } * */ public void setNombre(String value) { this.nombre = value; } /** * Obtiene el valor de la propiedad edad. * */ public int getEdad() { return edad; } /** * Define el valor de la propiedad edad. * */ public void setEdad(int value) { this.edad = value; } /** * Obtiene el valor de la propiedad mail. * * @return * possible object is * {@link String } * */ public String getMail() { return mail; } /** * Define el valor de la propiedad mail. * * @param value * allowed object is * {@link String } * */ public void setMail(String value) { this.mail = value; } }
Como vimos en este post el código generado por xjc es bastante limpio y nos ahorra mucho tiempo de programación. Si bien el código generado se puede agregar directamente a un proyecto java, en ocasiones tendremos que realizar pequeñas modificaciones sobre este, pero aun así, es mucho más rápido que tener que hacerlo todo por nosotros mismos.
enjoy!!!
Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.
Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye
Enjoy! :)
Continuando con los tutoriales sobre LibGDX (Librería para el desarrollo de videojuegos), en esta ocasión veremos como e...
En este tutorial nos conectaremos a una base de datos de Firebird utilizando el lenguaje de Visual Basic, el proyecto se...
En este post vamos a crear una aplicación sencilla para conectar C# con MySQL. Manos a la obra 🙂 Necesitamos – Con...
Cada versión de Linux viene con su propia terminal predeterminada para interactuar con el Sistema Operativo a través de...
En este tutorial veremos una forma para registrar archivos JPG en una base de datos PostgreSQL y recuperarlos para utili...
WhatsApp anuncio a través de su blog que ya se encuentra disponible la función de envío de fotos y videos TEMPORALES, es...
El gigante tecnologico Google a puesto un bonito Doodle en su buscador que esta fascinando a sus millones de usuarios qu...
WhatsApp anuncio a través de su blog que ya se encuentra disponible la función de envío de fotos y videos TEMPORALES, es...
Muchas de las innovaciones computacionales de la NASA se desarrollaron para ayudar a explorar el espacio, pero ahora la...
TikTok es una plataforma de microvideos muy popular entre los jóvenes el cual cuenta ya con millones de videos cortps de...