2010-08-11 9 views
1

Je suis en train de générer des fichiers source java à partir d'un paquet de *.xsd fichiers à l'aide de l'outil de génération de code xjc.XJC généré namespaces

Les espaces de noms utilisés dans les fichiers * .xsd sont les suivants:

http://www.domain.com/foo/bar.x 
http://www.domain.com/foo/bar.x.y 
http://www.domain.com/foo/bar.x.y.z 

XJC produit des emballages comme suit:

com.domain.foo.bar.x et lieux fichiers générés java de "... x" et "... xy" namespaces xsd là

com.domain.foo.bar.x_y et lieux générés fichiers java à partir de "... xyz" namespaces xsd là

Ce que je voudrais faire ici est propre:

com.domain.foo.bar.x 
com.domain.foo.bar.x.y 
com.domain.foo.bar.x.y.z package names 

Est-ce possible en quelque sorte? Peut-être en utilisant personnalisé JAXB liaisons? J'ai étudié les documents de liaison personnalisés de jaxb mais je ne suis pas sûr que ce soit possible.

Fondamentalement, je voudrais xjc pour traiter à la fois "/" et "." comme séparateurs de paquets.

Toute aide appréciée.

Adalbert

+0

J'ai réussi à résoudre partiellement ce problème en fournissant des liaisons personnalisées pour des fichiers XSD particuliers –

Répondre

6

utilisation jaxb:package personnalisation:

<jaxb:bindings 
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    jaxb:version="2.1"> 

    <jaxb:bindings schemaLocation="schema.xsd" node="/xsd:schema"> 
     <jaxb:schemaBindings> 
      <jaxb:package name="com.domain.foo.bar.x.y.z"/> 
     </jaxb:schemaBindings> 
    </jaxb:bindings> 
</jaxb:bindings> 

Sinon, vous pouvez vous renommer en l'espace de noms http://www.domain.com/foo/bar/x/y/z.