2016-09-09 4 views
0

ここに質問があります、契約はXSDファイルです。最近我々はJsonをサポートしたいと思っています。しかし、解決しなければならないいくつかのトリッキーな問題があります。私はこのようなXSDを定義する場合:
カスタムxjc生成列挙型とフィールド名ですか?

<xs:simpleType name="SomeType"> 
    <xs:restriction base="xs:string"> 
    <xs:enumeration value="SomeSelfDefineType" /> 
    </xs:restriction> 
</xs:simpleType> 

生成されたコードは、このようなものです:、XMLを使用している場合、それは、アノテーション情報を読み取るため

@XmlType(name = "SomeType") 
@XmlEnum 
public enum SomeType { 
    @XmlEnumValue("SomeSelfDefineType") 
    SOME_SELF_DEFINE_TYPE("SomeSelfDefineType") 
} 

は、それは、罰金だが、我々はJsonを使用する場合SomeSelfDefineTypeSOME_SELF_DEFINE_TYPEに転送されます。多くのカスタムを登録してください。この問題を解決するには、私にとっては良い選択肢ではありません。Gson serializable/deserializable Interface

フィールドや列挙型の名前のカスタマイズ方法に関する他の回答をチェックしましたが、実際には多くの列挙型定義があります。私はこのようなコードを生成するための任意のプラグインやソリューションがあります:

@XmlType(name = "SomeType") 
@XmlEnum 
public enum SomeType { 
    @XmlEnumValue("SomeSelfDefineType") 
    SomeSelfDefineType("SomeSelfDefineType") 
} 

私はJAXBまたはそのプラグインに慣れていないよ、誰も私に私はこの問題を保存するためのいくつかのXJB設定やプラグインを与えることができますか?

答えて

0

.xjbを使用してenumの値を上書きすることができます。

<?xml version="1.0"?> 
    <jxb:bindings version="2.1" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
     xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"  jxb:extensionBindingPrefixes="xjc"> 

     <jxb:bindings schemaLocation="yours.xsd"> 
      <jxb:bindings 
       node="//xs:simpleType[@name='SomeType']/xs:restriction/xs:enumeration[@value='SomeSelfDefineType']"> 
       <jxb:typesafeEnumMember name="SomeSelfDefineType" /> 
      </jxb:bindings> 
     </jxb:bindings> 

    </jxb:bindings> 
+0

ちょっと、私の問題は、私のために多くの列挙型があることです。すべての列挙型をカスタム化する方が簡単な方法があるかどうかを知りたいと思います。 –

関連する問題