2010-09-09 5 views
12

J'ai besoin de générer plusieurs classes à partir de mon schéma XML (XSD) dans un package (.jar). Comment puis-je configurer ces classes pour qu'elles soient sérialisables?Comment générer des classes à partir de XSD qui implémente sérialisable?

(j'utilise Eclipse et JAX-B)

+1

Reproduction exacte [Comment générer une classe Java qui implémente l'interface Serializable de xsd en utilisant JAXB?] (Http://stackoverflow.com/questions/1513972/how-to -generate-a-java-class-qui-implements-sérialisable-interface-from-xsd-usi) –

+0

@pascal: désolé, je n'ai pas vu cette question avant – Topera

+0

Pas de problème. Mais encore, c'est une dupe :) –

Répondre

20

Si vous utilisez XJC, je vous recommande de lire cette référence: JavaTM Architecture for XML Binding: JAXB RI Vendor Extensions Customizations:

Vous devez ajouter dans votre schéma définition aditional namespaces à ajouter xjc balisage aditional:

<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"> 

Ensuite, y compris un nœud <xjc:serializable> au sein <jaxb:globalBindings>:

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

Cela entraînera que toutes les classes concrètes implémentent l'interface Serializable. En outre, vous pouvez définir la valeur UUID des classes résultantes (c'est un attribut facultatif).

+0

ás Tks! Nous avons trouvé le même lien :). Je vais vous donner +1 et accepter – Topera

+0

@Topera Merci aussi. –

+0

puis de générer des classes à partir de la ligne de commande. xjc -extension -d location_where_classes_to_be_generated xsd_location – Ashish

4

J'ai trouvé

<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> 
Questions connexes