2016-09-07 5 views
0

私はxmlアノテートpojosの束を生成しようとしています。これを行うには、私のすべてのxsdファイルが自分のプロジェクトのリソースフォルダにあります(それらはpolycom rmx sdk、RmxSdkApiV7_8-EMA_EMA-V7_8_0_303からのものです)。私は右クリックして各自(150人以上)JAXBクラスを生成してクリックしてください。私はプロジェクトを選択し、ウィザードを終了するよりも名前空間を与えます。これを実行した後、新しく生成されたクラスは既存のクラスを上書きするという警告があります。これは私の問題です。いくつかの一般的に使用されるオブジェクトは、異なるxsdファイルで異なる定義を持つためです。オーバーライドが発生すると、定義されているものはすべて失われます。ノンオーバーライドjaxb生成

したがって、たとえば、response_trans_conf.xsdは

trans_conf_2.xsdのような別のスキーマファイルが

<xsd:element name="GET"> 
    <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element ref="ID"/> 
      <xsd:element ref="OBJ_TOKEN"/> 
      <xsd:any processContents="skip" minOccurs="0" maxOccurs="unbounded" namespace="##other"/> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 

としてGET定義するように、私が取得対象になってしまいます

<xsd:element name="GET"> 
    <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element ref="CONFERENCE" minOccurs="0"/> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 

としてGET定義それは、(それぞれ)

public class GET { 
    @XmlElement(name = "CONFERENCE") 
    protected ConferenceContent conference; 

ORのように見えます

public class GET { 
    @XmlElement(name = "ID", required = true) 
    protected BigInteger id; 
    @XmlElement(name = "OBJ_TOKEN", required = true) 
    protected String objtoken; 
    @XmlAnyElement 
    protected List<Element> any; 

私が必要とするのは、両方を組み合わせたオブジェクトです。私が言ったように、このsdkには150以上のxsdファイルがあります。したがって、この問題には他のいくつかの共通のオブジェクトが乗算されます。
FYIは同時にオーバーライドされたクラスではなく、結合されたクラスを欲しがっています。

+1

最終的な出力がすべての要素の組み合わせ(重複を避ける)であるならば、xsdを変更して 'xsd complextype extension' [link](http://www.w3schools。 com/xml/el_extension.asp) – ulab

答えて

0

回答が不足しているため、不足しているメンバーを手動で追加するという回避策を実装しました。

はイムは確かulabが同様に動作しますが、私は本当に私が見たが実装されていませんでしたXSDの

他のオプションを編集しないで上記のコメントは、ラッパーです。これらの共通クラスを拡張して、sdkの生成ファイルの上にある別のレイヤー内のすべてのメンバーを持つようにします。新しいバージョンと新しい世代のファイルがある場合でも、sdkに触れる必要はありません。

関連する問題