如何建议xjc生成Java List而不是嵌套类

时间:2014-01-31 04:47:12

标签: java xml jaxb xsd jax-ws

我有一段XSD读取如下

<xs:schema ...>
    <xs:element name="order" type="tns:order/>
    <xs:complexType name="order">
        <xs:sequence>
            <xs:element .../>
            <xs:element name="itemList" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="item" type="tns:item" minOccurs="0" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="item">
        <xs:sequence>
            ...
        </xs:sequence>
    </xs:complexType>
</xs:schema>

默认情况下,使用嵌套类Order.ItemList生成Order类。 Order类中itemList字段的签名是:

protected Order.ItemList itemList;

但是我期望itemList的类型是java.util.List,即

protected List<Item> itemList;

如何通过外部绑定文件实现此目的?我知道这个link但是接受的答案对我不起作用我无法控制这个模式(它是WSDL的一部分)

1 个答案:

答案 0 :(得分:1)

您必须使用 @XmlElementWrapper 注释列表itemList 。 你可以用两种方式做到这一点:

  • 手动(如果您从架构中自动生成类,则不是选项,即使用xjc)
  • 使用jaxb-xew-plugin插件。
      

    该插件与命令行中的xjc或Ant任务或maven-jaxb2-plugin一起使用。

相关答案: