2010-09-16 1 views
5

J'ai un schéma qui est lu par quelques applications différentes pour la génération de formulaire; l'un d'entre eux utilise JAXB/XJC pour compiler sa structure de classe. Le schéma contient appinfo informations pour les noms conviviaux des champs, par exemple:JAXB - XJC peut-il compiler appinfo dans la structure de classe?

<xs:element name="HomeAddress" type="xs:string"> 
    <xs:annotation> 
    <xs:appinfo>Home address</xs:appinfo> 
    </xs:annotation> 
</xs:element> 

Est-il possible d'obtenir XJC pour compiler ces informations?

+0

De quelle façon? Quel est le résultat souhaité dans votre exemple? – musiKk

+0

Peu importe, tant que je peux y accéder à l'exécution à partir de Java. Par annotation (que je pourrais saisir avec réflexion) ou par membre statique semble le plus facile. –

Répondre

5

Vous pouvez utiliser le Annotate plugin pour ajouter des annotations Java arbitraires dans vos classes dérivées schéma. Avec ce plugin, vous pouvez gérer une syntaxe comme:

<xs:element name="HomeAddress" type="xs:string"> 
    <xs:annotation> 
    <xs:appinfo> 
     <ann:annotate xmlns:ann="http://annox.dev.java.net/com.acme.foo"> 
     <my:Label value="Home address"/> 
     </ann:annotate> 
    </xs:appinfo> 
    </xs:annotation> 
</xs:element> 

Un vous obtiendrez quelque chose comme:

@Label("Home address") // FQCN is com.acme.foo.Label 
public String getHomeAddress(...) {} 
+0

Excellent, merci! –

+0

@lexicore: et si vous ne pouvez pas modifier le schéma parce qu'il est fourni par un tiers? –

+0

@Artem Oboturov: Vous pouvez faire la même chose avec des fichiers de liaison ('* .xjb') sans modifier le schéma. – lexicore

Questions connexes