JAXB: Come modificare i nomi delle classi generate da XJC quando il tipo di attr è specificato in XSD?

Sono un principiante di JAXB e sto avendo problemi fastidiosi durante la generazione di classi Java con xjc. Mi viene fornito un XSD come questo:

 ...   ...  

e xjc sta generando una class chiamata ItemType.java , ma voglio che il nome sia Item.java . Cioè, voglio le classi generate come se l’XSD fosse come questo:

    ...   

Non ci sarà alcun riutilizzo di itemType su nessun altro elemento, sono solo le persone che costruiscono l’XSD ad apprezzarlo in questo modo. Immagino che ci possa essere un modo per farlo con i binding personalizzati ma non ho ancora trovato come.

Qualsiasi aiuto?

Grazie, Miguel

JAXB offre due modi per ottenere ciò:

1. Annotazioni dello schema in linea

È ansible utilizzare le annotazioni dello schema JAXB per controllare i nomi delle classi.

           

2. File di rilegatura esterno

Questa personalizzazione può essere eseguita anche tramite file di bind esterno:

        

La riga di comando xjc sarebbe:

 xjc -d out -b binding.xml your-schema.xsd 

Bene, finalmente ho trovato come farlo. Il mio file di bind esterno è:

       

e il comando xjc deve essere eseguito con -extension opzione -extension .

Ho trovato la soluzione in questa pagina:

http://weblogs.java.net/blog/kohsuke/archive/2006/03/why_does_jaxb_p.html

Saluti, Miguel

Questo è il file di bind esterno che uso per rinominare un complextype. Compila con wsdl2java di cxf.