2010-09-09 8 views
12

Ich muss viele Klassen aus meinem XML-Schema (XSD) in einem Paket (.jar) generieren. Wie kann ich diese Klassen so konfigurieren, dass sie serialisierbar sind?Wie generiert man Klassen aus XSD, die serialisierbar implementiert?

(Ich bin mit Eclipse und JAX-B)

+1

exaktes Duplikat [Wie eine Java-Klasse zu generieren, die Serializable Schnittstelle von Xsd implementiert JAXB verwenden?] (Http://stackoverflow.com/questions/1513972/how-to -generate-a-java-class-was-implementiert-serializable-interface-from-xsd-usi) –

+0

@pascal: sorry, ich habe diese Frage nicht vor – Topera

+0

Kein Problem. Aber trotzdem, es ist ein Betrogener :) –

Antwort

20

Wenn Sie XJC verwenden, ich empfehle Ihnen diese Referenz zu lesen: JavaTM Architecture for XML Binding: JAXB RI Vendor Extensions Customizations:

Sie haben in Ihrem Schema aditional Namespace-Definition hinzuzufügen hinzufügen xjc aditional Auszeichnungs:

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

Dann einschließlich eines <xjc:serializable> Knoten innerhalb <jaxb:globalBindings>:

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

Dies führt dazu, dass alle konkreten Klassen die Serializable-Schnittstelle implementieren. Außerdem können Sie den UUID-Wert der resultierenden Klassen definieren (das ist ein optionales Attribut).

+0

ás Tks! Wir haben den gleichen Link gefunden :). Ich gebe dir +1 und akzeptiere – Topera

+0

@Topera Danke auch. –

+0

und dann Klassen über die Befehlszeile generieren. xjc -extension -d location_where_classes_to_be_generated xsd_location – Ashish

4

ich gefunden habe

<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> 
Verwandte Themen