2010-09-09 16 views
12

Potrzebuję wygenerować wiele klas z mojego schematu XML (XSD) w pakiecie (.jar). Jak skonfigurować te klasy, aby można je było przekształcać w kategorie?Jak generować klasy z XSD implementujące serializację?

(używam Eclipse i JAX-B)

+1

dokładną kopią [Jak wygenerować klasy Java, który implementuje interfejs Serializable z XSD przy użyciu JAXB?] (Http://stackoverflow.com/questions/1513972/how-to -generate-a-java-class-which-implements-serializable-interface-from-xsd-usi) –

+0

@pascal: przepraszam, nie widziałem tego pytania przed – Topera

+0

Bez problemu. Ale wciąż to dupek :) –

Odpowiedz

20

Jeśli używasz XJC, ja polecam Ci do przeczytania tego odniesienia: JavaTM Architecture for XML Binding: JAXB RI Vendor Extensions Customizations:

trzeba dodać w swoim schemacie aditional przestrzeni nazw do definicji dodać XJC aditional znaczników:

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

Następnie w tym węźle <xjc:serializable> ciągu <jaxb:globalBindings>:

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

Spowoduje to, że wszystkie konkretne klasy implementują interfejs Serializable. Można również zdefiniować wartość UUID wynikowych klas (jest to opcjonalny atrybut).

+0

i Tks! Znaleźliśmy ten sam link :). Dam ci +1 i zaakceptuj – Topera

+0

@Topera Dziękuję. –

+0

, a następnie generowanie klas z wiersza poleceń. xjc -extension -d location_where_classes_to_be_generated xsd_location – Ashish

4

Znalazłem

<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> 
Powiązane problemy