2012-04-06 7 views
0

Für JAXB konnten wir Inline-Anpassung verwenden, um Schema-Compiler in irgendeiner Weise anzupassen. Dies könnte über Schema-Binding-Deklarationen erfolgen (< jxb: schemaBindings/>).Kann ich den XJC-Compiler so konfigurieren, dass benutzerdefinierte XML-Bindungen für Inline-Anpassungen verwendet werden?

Jede Möglichkeit, andere XML-Tags (z. B. ActualType, EnumerationValue im folgenden Beispiel) mit dem Standard-XJC-Compiler zu verwenden, um die generierten Klassen zu beeinflussen?

<xs:simpleType name="SomeType"> 
    <xs:annotation> 
    <xs:appinfo> 
     <ActualType Name="unsignedInt" /> 
    </xs:appinfo> 
    </xs:annotation> 
    <xs:restriction base="xs:string"> 
    <xs:enumeration value="PredefinedEnumValue"> 
     <xs:annotation> 
     <xs:appinfo> 
      <EnumerationValue>10000</EnumerationValue> 
     </xs:appinfo> 
     </xs:annotation> 
    </xs:enumeration> 
    </xs:restriction> 
</xs:simpleType> 

Antwort

0

Für Enumerationswerts müssen Sie <jaxb:typesafeEnumMember value="10000" /> (Check Beispiel here) und für einfache Typumwandlung verwenden, müssen Sie <jaxb:baseType name="int" /> verwenden (überprüfen Beispiel there).

P.S. Java unterstützt keine unsignierten Ints. Vergessen Sie auch nicht, den Jaxb-Namespace xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" in Ihrem <xsd:schema> zu definieren.

+0

Es würde mit dem funktionieren, was Sie vorschlagen. Mit typesafeEnumMember können Sie den generierten Namen der Enum-Instanz von "Wert" auf "Name" anpassen (wie in Beispiel 3). –

+0

Aus diesem Handbuch: Das Element jaxb: typesafeEnumMember verfügt auch über ein Wertattribut. Der Wert wird verwendet, um die Aufzählungsfacette mit dem richtigen jaxb: typesafeEnumMember-Element zu verknüpfen. Der Wert des Wertattributs muss mit einem der Werte des Wertattributs einer Aufzählungsfacetten übereinstimmen. Dieses Attribut ist erforderlich, wenn Sie eine externe Bindungsspezifikation zum Anpassen der Typgenerierung verwenden oder wenn Sie die Elemente jaxb: typesafeEnumMember als untergeordnete Elemente des Elements jaxb: typesafeEnumClass gruppieren. –

+0

Von Ihnen kommentieren ich, obwohl Sie den Wert anpassen müssen :) Natürlich ist die Namensanpassung auch mit 'name' Attribut möglich. Happy testing :) –

Verwandte Themen