2010-09-09 15 views
12

Necesito generar muchas clases de mi esquema XML (XSD) en un paquete (.jar). ¿Cómo puedo configurar estas clases para que sean serializables?¿Cómo generar clases desde XSD que implemente serializable?

(estoy usando Eclipse y JAX-B)

+1

duplicado exacto de [Cómo generar una clase Java que implementa la interfaz Serializable de xsd utilizando JAXB?] (Http://stackoverflow.com/questions/1513972/how-to -generate-a-java-class-which-implements-serializable-interface-from-xsd-usi) –

+0

@pascal: lo siento, no vi esa pregunta antes de – Topera

+0

No hay problema. Pero aún así, es un tonto :) –

Respuesta

20

Si está utilizando XJC, te recomiendo leer esta referencia: JavaTM Architecture for XML Binding: JAXB RI Vendor Extensions Customizations:

Hay que añadir en su esquema de espacios de nombres Adicionales definición añadir xjc marcado Adicional:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 

      xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
      xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
      jaxb:extensionBindingPrefixes="xjc" 
      jaxb:version="1.0"> 

Entonces, incluyendo un nodo de <xjc:serializable> dentro <jaxb:globalBindings>:

<xs:annotation> 
    <xs:appinfo> 
     <jaxb:globalBindings generateIsSetMethod="true"> 
      <xjc:serializable uid="12343"/> 
     </jaxb:globalBindings> 
    </xs:appinfo> 
</xs:annotation> 

Esto hará que todas las clases concretas implementen la interfaz Serializable. Además, puede definir el valor de UUID de las clases resultantes (que es un atributo opcional).

+0

ás Tks! Encontramos el mismo enlace :). Le daré +1 y acepto – Topera

+0

@Topera Gracias también. –

+0

y luego generar clases desde la línea de comando. xjc -extension -d location_where_classes_to_be_generated xsd_location – Ashish

4

que he encontrado

<schema 
    xmlns="http://www.w3.org/2001/XMLSchema" 
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
    jaxb:extensionBindingPrefixes="xjc" 
    jaxb:version="1.0" 
    > 

    <!-- FORCE ALL CLASSES IMPLEMENTS SERIALIZABLE --> 
    <annotation> 
    <appinfo> 
     <jaxb:globalBindings generateIsSetMethod="true"> 
     <xjc:serializable uid="1"/> 
     </jaxb:globalBindings> 
    </appinfo> 
    </annotation> 

    .... 

</schema> 
Cuestiones relacionadas