Javadabbadoo.org - Tu comunidad Java parlante XML
Inicio | Cursos infosintesis.net liberados | Java SE Avanzado | Mani. Doc. XML con JAXB a partir de un XML Schema
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

shell>ant runxjc

Este es el aspecto de la línea de comandos al ejecutar el comando ant en un entorno Windows

 

JavaDabbaDoo.org
Tu comunidad Java parlante. Cursos abiertos, tutoriales y mucho mucho más ...