2012-01-04 8 views
3
ここ

は私のXMLスキーマからの抜粋です:JAXBは、クラスを生成:無視中間クラス

<xsd:complexType name="MyType"> 
    <xsd:sequence> 
     <xsd:element name="Numbers"> 
      <xsd:complexType> 
       <xsd:sequence> 
        <xsd:element name="Number" minOccurs="1" maxOccurs="5" type="xsd:decimal"/> 
       </xsd:sequence> 
      </xsd:complexType> 
     </xsd:element> 
    </xsd:sequence> 
</xsd:complexType> 

JAXBは私に次のクラスを生成します。

public class MyType { 
    protected MyType.Numbers numbers; 

    public static class Numbers { 
     protected List<BigDecimal> number; 
    } 
} 

しかし、私は、この中間クラスを無視したいのですが

public class MyType { 
    protected List<BigDecimal> number; 
} 

どういうことがありますか?

答えて

3

はい、この変更は実際にはモデルの変更であるため、外部プラグインの助けを借りてのみJAXBで可能です。 @XmlElementWrapper pluginをご覧ください。

注:既にこのフォーラム(How generate XMLElementWrapper annotationDealing with JAXB CollectionsJAXB List Tag creating inner class)と同じ質問がありました。まず検索を使用してください。

+0

ありがとうございました。しかし、それは私のためには機能しません。 'numbers'は現在期待どおりのリストになりました。しかしgetterは次のようになります: 'public Numbers getNumbers {return numbers; } '生成されたクラスはコンパイルされません... – Sebi

+0

プラグインにバグがあります:(申し訳ありませんが、私はプラグインを所有していないので、 –

+1

問題は、自分のXML要素の中に名前にアンスコアを含むものがあったということです。例えば、 'last_name'。特定の理由から、' underscoreBinding = "を有効にしなければなりませんでした。その結果、変数が 'lastName'とgetter' getLast_name'という名前になったので、プラグインはgetterメソッドとsetterメソッドで変数を一致させることができませんでした – Sebi

関連する問題