Se empleará JAXB.
La herramienta que se usará es xjc, que viene instalada en el directorio \bin de los JDK. Si no se tiene esta ruta dentro del path, simplemente habrá que referenciarla desde una ventana de comandos.
Se necesita un fichero de binding para que se cree una clase por cada elemento del XSD, sino, se generará una única clase pública con clases internas.
Fichero jaxb-binding.xml:
<jaxb:bindings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" version="2.1"> <jaxb:globalBindings localScoping="toplevel"/> </jaxb:bindings>
Con esto, sólo hace falta tener el XSD que se quiera mapear, por ejemplo, el famoso employee.xsd:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="employee" type="employee"/> <xs:complexType name="employee"> <xs:sequence> <xs:element name="name" type="xs:string" minOccurs="0"/> <xs:element name="salary" type="xs:double"/> <xs:element name="designation" type="xs:string" minOccurs="0"/> <xs:element name="address" type="address" minOccurs="0"/> </xs:sequence> <xs:attribute name="id" type="xs:int" use="required"/> </xs:complexType> <xs:complexType name="address"> <xs:sequence> <xs:element name="city" type="xs:string" minOccurs="0"/> <xs:element name="line1" type="xs:string" minOccurs="0"/> <xs:element name="line2" type="xs:string" minOccurs="0"/> <xs:element name="state" type="xs:string" minOccurs="0"/> <xs:element name="zipcode" type="xs:long"/> </xs:sequence> </xs:complexType> </xs:schema>
Finalmente, se lanza el comando:
xjc.exe -d . -p es.pruebas.jaxb -b jaxb-binding.xml employee.xsd
Muy útil ¡¡¡gracias!!!
ResponderEliminar