| Manipular un Documento XML con JAXB a partir de un XML Schema |
| Paso 2: Operativa |
Creación de un XML Schema
En la carpeta C:\isg\j2se\lineacomandos\examples\jaxb\modificar-marshal nos creamos un documento XML Schema llamado pedido.xsd. Este es el contenido de este fichero
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:element name="pedido" type="PedidoType"/>
<xsd:element name="comentario" type="xsd:string"/>
<xsd:complexType name="PedidoType">
<xsd:sequence>
<xsd:element name="enviarA" type="DireccionEEUU"/>
<xsd:element name="facturarA" type="DireccionEEUU"/>
<xsd:element ref="comentario" minOccurs="0"/>
<xsd:element name="articulos" type="Articulos"/>
</xsd:sequence>
<xsd:attribute name="fechaPedido" type="xsd:date"/>
</xsd:complexType>
<xsd:complexType name="DireccionEEUU">
<xsd:sequence>
<xsd:element name="nombre" type="xsd:string"/>
<xsd:element name="calle" type="xsd:string"/>
<xsd:element name="ciudad" type="xsd:string"/>
<xsd:element name="estado" type="xsd:string"/>
<xsd:element name="codigoPostal" type="xsd:decimal"/>
</xsd:sequence>
<xsd:attribute name="pais" type="xsd:NMTOKEN" fixed="EEUU"/>
</xsd:complexType>
<xsd:complexType name="Articulos">
<xsd:sequence>
<xsd:element name="articulo" minOccurs="1" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="nombreProducto" type="xsd:string"/>
<xsd:element name="cantidad">
<xsd:simpleType>
<xsd:restriction base="xsd:positiveInteger">
<xsd:maxExclusive value="100"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="precioEEUU" type="xsd:decimal"/>
<xsd:element ref="comentario" minOccurs="0"/>
<xsd:element name="fechaEnvio" type="xsd:date" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="codigoStock" type="SKU" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="SKU">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{3}-[A-Z]{2}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema> |
Generación de Clases Java a través del compilador de JAXB (schema compiler)
En la carpeta C:\isg\j2se\lineacomandos\examples\jaxb\modificar-marshal nos creamos un documento XML llamado build.xml. Este es el contenido de este fichero
<?xml version="1.0" encoding="UTF-8"?>
<project name="modificar-marshal" default="default" basedir=".">
<description>Builds, tests, and runs the project modify-marshal.</description>
<property name="is.java-client-module" value="true"/>
<import file="../../bp-project/main.xml"/>
<path id="classpath">
<pathelement path="src" />
<pathelement path="build/classes" />
<pathelement path="build/schemas" />
<fileset dir="${javaee.home}" includes="lib/javaee.jar" />
<fileset dir="${javaee.home}" includes="lib/appserv-rt.jar" />
<fileset dir="${javaee.home}" includes="lib/appserv-ws.jar" />
</path>
<taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask">
<classpath refid="classpath" />
</taskdef>
<target name="runxjc" description="Ejecuta el comando xjc">
<mkdir dir="build/gen-src" />
<xjc schema="pedido.xsd" package="jaxb.pedido" target="build/gen-src">
<produces dir="build/gen-src/jaxb.pedido" includes="**/*.java" />
</xjc>
<echo message="Clases generadas en el directorio ...\build\gen-src\jaxb\pedido" />
</target>
</project>
|
Ahora nos vamos a la línea de comandos y ejecutamos el comando ant desde el directorio C:\isg\j2se\lineacomandos\examples\modificar-marshal
Nota: Para que el comado ant sea visible desde la línea de comandos tenemos que indicar su localización a través de la variable de entorno PATH de nuestro sistema. El comando en cuestión se encuentra localizado en C:\Sun\AppServer\lib\ant\bin
Ahora ya estamos preparados para ejecutar el objetivo runxjc
Este es el aspecto de la línea de comandos al ejecutar el comando ant en un entorno Windows