2014-05-06 9 views
6

Si prevede di utilizzare JAXB per il mapping di xml in oggetti. Il nostro requisito è tale che lavoreremo solo su una parte del documento (leggermente biggish), quindi vogliamo convertire solo quella parte (un frammento) in oggetti. Quindi, non vogliamo creare classi per tutti gli elementi in xsd.xjc solo per parte dello schema

Come possiamo chiedere a xjc di ignorare determinati elementi o considerare elementi specifici durante la generazione delle classi?

Da quello che ho letto, possiamo usare il file di bind per personalizzare il comportamento di xjc, ma cosa possiamo inserire nello schema per ignorare gli elementi.

+0

stai usando le annotazioni XSD o Java per generare classi? –

+0

Stiamo usando xsd, ma questo xsd è per l'intero documento non solo la parte necessaria. Inoltre, non sono sicuro di come posso utilizzare le annotazioni java per generare le classi? Puoi indicarmi un link? – OKOK

+0

Hai trovato una soluzione per il tuo problema ormai? Ho lo stesso problema. Per peggiorare le cose: le parti inutilizzate di XSD fanno errori di lancio XJC, perché due tipi con nomi simili si riducono allo stesso nome di file su Windows. –

risposta

2

È possibile utilizzare un file di bind esterno per configurare XJC per utilizzare una classe esistente anziché generarne una. È possibile sfruttare ciò facendo riferimento a una classe inesistente per consentire a JAXB di escludere parti del proprio schema XML. Nell'esempio seguente verrà utilizzata la classe inesistente com.example.Fake per il tipo complesso denominato Foo.

binding.xml

<jxb:bindings schemaLocation="yourSchema.xsd"> 
    <jxb:bindings node="//xs:complexType[@name='Foo']"> 
     <jxb:class ref="com.example.Fake"/> 
    </jxb:bindings> 
</jxb:bindings> 

XJC chiamata

xjc -d outputDir -b binding.xml yourSchema.xsd 
+1

Grazie per il tuo suggerimento. L'unica cosa è che il mio schema è abbastanza grande, quindi dovrò scrivere i bind per molti elementi .... che suppongo sarebbe uguale alla scrittura di POJO per le parti richieste e alla messa di annotazioni su di esso. Qualche modo più semplice? Credo di sembrare troppo pigro: P – OKOK

Problemi correlati