【问题标题】:How to advise xjc to generate Java List instead of nested class如何建议 xjc 生成 Java List 而不是嵌套类
【发布时间】:2014-02-23 16:56:21
【问题描述】:

我有一段 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 的一部分)

【问题讨论】:

  • 尝试将 itemList 的类型定义移到 order 的类型定义之外。
  • @tdrury:正如我在帖子中提到的,我无法控制架构,它是我的客户端 Web 服务描述的一部分。

标签: java xml jaxb xsd jax-ws


【解决方案1】:

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

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

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

相关答案:

【讨论】:

猜你喜欢
  • 2012-11-30
  • 1970-01-01
  • 2011-11-08
  • 2012-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多