【问题标题】:Generating Arrays for XSD Sequences via JaxB JXC通过 JaxB JXC 为 XSD 序列生成数组
【发布时间】:2013-07-25 04:57:28
【问题描述】:

我有一个 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>

现在,当我使用 JaxBs XJC 将其转换为 Java 类时,它将在我的 Catalog 类中为我生成一个 java.util.List,用于字段和 Category 的 getter/setter。 p>

但是,我需要在使用 java2wsdl 的 Axis2 Web 服务中使用它是像 Category[] 这样的数组。

我对 JaxB 绑定有点熟悉,并且已经尝试使用以下方法指定集合类型:

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

导致代码无效,因为它仍在使用java.util.List,但使用了构造函数new Category[]&lt;Category&gt;

当然我总是可以在生成后编辑生成的代码,但是当我尝试重新生成它时会出现问题。

我现在得到的是:

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

我想要的是:

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

有什么想法吗? 我目前正在使用 XJC 2.2.6 和 Axis2 1.6.2。

【问题讨论】:

    标签: java jaxb xsd axis2 xjc


    【解决方案1】:

    我认为你需要使用 javaType 标签:

    <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>
    

    生成以下类:

    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;
            }
    
        }
    

    (使用 org.apache.cxf cxf-xjc-plugin 2.6.2 maven 插件)

    您还需要在 XSD 中定义 Category...

    【讨论】:

      猜你喜欢
      • 2012-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-08
      相关资源
      最近更新 更多