2013-07-12 3 views
0

Dans mon schéma xsd, j'ai une expression de type complexType qui comporte 27 éléments et tous étendent un type complexe complexe "StepElement". Voici un échantillon du complexType d'expression. (Par souci de simplicité, je ne montrant que 8 d'entre eux.)JAXB génère un nom de méthode ridiculement long et bizarre

<xs:complexType name="expression"> 
      <xs:sequence maxOccurs="unbounded"> 
       <xs:element name="STEP_ANIMATION" type="Animation_Attributes" minOccurs="0" maxOccurs="unbounded"/> 
       <xs:element name="STEP_EXPECT_REPLY" type="Expect_Reply_Attributes" minOccurs="0" maxOccurs="unbounded"/> 
       <xs:element name="STEP_RESTART" type="Restart_Attributes" minOccurs="0" maxOccurs="unbounded"/> 
       <xs:element name="STEP_REDIRECT" type="Redirect_Attributes" minOccurs="0" maxOccurs="unbounded"/> 
       <xs:element name="STEP_SUBGOAL" type="Subgoal_Attributes" minOccurs="0" maxOccurs="unbounded"/> 
       <xs:element name="STEP_TIMER" type="Timer_Attributes" minOccurs="0" maxOccurs="unbounded"/> 
       <xs:element name="STEP_SITUATION" type="Situation_Attributes" minOccurs="0" maxOccurs="unbounded"/> 
       <xs:element name="STEP_SOUND" type="Sound_Attributes" minOccurs="0" maxOccurs="unbounded"/> 
      </xs:sequence> 
     <xs:attribute name="ID" type="xs:integer"/> 
     <xs:attribute name="SUCCESS_EVT" type="xs:string"/> 
     <xs:attribute name="DELAY" type="xs:float"/> 
    </xs:complexType> 

Si chacun de ces types d'éléments se présentent comme suit (Ils étendent tous StepElement mais ont des attributs différents)

<xs:complexType name="Animation_Attributes"> 
     <xs:complexContent> 
      <xs:extension base="StepElement"> 
       <xs:attribute name="AGENT" type="xs:string" default="$CURRENTBOT"/> 
       <xs:attribute name="SUCCESS_EVT" type="xs:string"/> 
       <xs:attribute name="FAIL_EVT" type="xs:string"/> 
       </xs:extension> 
     </xs:complexContent> 
</xs:complexType> 

Et voici comment le StepElement ressemble

<xs:complexType name="StepElement"> 
     <xs:simpleContent> 
      <xs:extension base="xs:string"> 
       <xs:attribute name="ID" type="xs:integer"/> 
       <xs:attribute name="ENGLISH" type="xs:string"/> 
      </xs:extension> 
     </xs:simpleContent> 

maintenant, le problème que j'ai est que quand je parse ce schéma, la méthode getter que le JAXB génère en classe d'expression est ce

public List<StepElement> getSTEPANIMATIONAndSTEPEXPECTREPLYAndSTEPRESTART() 

Ai-je fait quelque chose de mal dans la structure du schéma qui est à l'origine que cela se produise ou est-il une solution pour modifier le nom de la méthode?

Répondre

1

Vous pouvez utiliser un fichier de liaison JAXB pour personnaliser les noms de méthodes générés. Voici le Oracle documentation on it.

+0

J'ai étudié la documentation sur la personnalisation des liaisons JAXB mais cela ne dit rien sur la personnalisation des noms de méthodes: /. –

+0

Voici un exemple. http://stackoverflow.com/questions/4502229/how-do-you-customize-how-jaxb-generates-plural-method-names – austin

+0

Merci. Cela fonctionne parfaitement. –

Questions connexes