2013-07-25 15 views
5

複雑な型のシーケンスを記述するXSDがあります。私はJaxBs XJCは、Javaクラスにこれを変換するために使用する場合 JaxB JXCを使用してXSD配列の配列を生成する

<xs:complexType name="Catalog"> 
    <xs:sequence> 
    <xs:element name="Category" minOccurs="0" maxOccurs="unbounded"> 
     <xs:complexType> 
     <xs:sequence> 
      <xs:element type="xs:string" name="ParentCategoryIDRef"/> 
      <xs:element type="xs:string" name="Method"/> 
     </xs:sequence> 
     <xs:complexType> 
    </xs:element> 
    </xs:sequence> 
<xs:complexType> 

は、今では私のフィールドと Categoryのゲッター/セッターのための私の Catalogクラスで java.util.Listを生成します。

しかし、私がjava2wsdlを使用してAxis2 Webサービスで使用するために必要なものは、Category[]のような配列です。

は、私は、JAXBバインディングに精通し、ビットが既に使用してコレクション型を指定してみましたよ:それはまだjava.util.Listを使用しますが、コンストラクタnew Category[]<Category>としたため、不正なコードが生じた

<jaxb:property collectionType="Category[]"/> 

もちろん、生成されたコードを生成後に編集することはできますが、再生成しようとすると問題が発生します。私が今持っているもの

は次のとおりです。

public class Catalog { 
    @XmlElement(name = "Category") 
    protected List<Category> category; 
} 

私が欲しいのです:

public class Catalog { 
    @XmlElement(name = "Category") 
    protected Category[] category; 
} 

任意のアイデア? 現在、Axis2 1.6.2でXJC 2.2.6を使用しています。

答えて

1

私はあなたのJavaTypeタグを使用する必要があると思う:org.apache.cxf CXF-XJC-プラグインを2.6.2 Mavenを使って

public class Catalog { 

     @XmlElement(required = true, type = Category.class) 
     protected Category[] category; 

     public Category[] getCategory() { 
      return category; 
     } 

     public void setCategory(Category[] value) { 
      this.category = value; 
     } 

    } 

(:

<xs:complexType name="catalog"> 
     <xs:sequence> 
      <xs:element name="category" type="ns:Category" > 
       <xs:annotation> 
        <xs:appinfo> 
         <jxb:javaType name="Category[]"/> 
        </xs:appinfo> 
       </xs:annotation> 
      </xs:element> 
     </xs:sequence> 
    </xs:complexType> 

は、以下のクラスを生成しますプラグイン)

また、XSDでカテゴリの定義が必要です。

関連する問題