gpt4 book ai didi

java - JAX-WS No Enum 生成解析带有限制列表(枚举)的 WSDL

转载 作者:行者123 更新时间:2023-11-30 07:45:21 24 4
gpt4 key购买 nike

如果 WSDL 类型定义如下:

<xs:simpleType name="AccountStatus">
<xs:restriction base="xs:string">
<xs:enumeration value="Open" />
<xs:enumeration value="Closed" />
<xs:enumeration value="CreditOnly" />
<xs:enumeration value="BudgetOnly" />
<xs:enumeration value="Frozen" />
<xs:enumeration value="Reserved" />
<xs:enumeration value="Cancelled" />
</xs:restriction>
</xs:simpleType>

普通 Java 枚举 AccountStatus 在客户端类中生成。

但是当定义更改为该枚举的列表时,如下所示:

<xs:simpleType name="AccountStatus">
<xs:list>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Open"/>
<xs:enumeration value="Closed"/>
<xs:enumeration value="CreditOnly"/>
<xs:enumeration value="BudgetOnly"/>
<xs:enumeration value="Frozen"/>
<xs:enumeration value="Reserved" />
<xs:enumeration value="Cancelled" />
</xs:restriction>
</xs:simpleType>
</xs:list>
</xs:simpleType>

没有为 AccountStatus 生成枚举类。在应该具有帐户状态列表的对象本身上。目前已经

List<List<String>> statuses 

而不是

List<AccountStatus> statuses 

最佳答案

我正在从第三方供应商 Web 服务 WSDL 生成客户端,我无法更改它。到目前为止,我找到了使用 JAXB Bindings 管理问题的方法:

<jxb:bindings schemaLocation="../main/resources/META-INF/wsdl/AccountsService.wsdl#types?schema4" node=".//xs:simpleType[@name='AccountStatus']/xs:list/xs:simpleType">
<jxb:typesafeEnumClass name="AccountStatus">
<jxb:typesafeEnumMember value="Open" name="Open" />
<jxb:typesafeEnumMember value="Closed" name="Closed" />
<jxb:typesafeEnumMember value="CreditOnly" name="CreditOnly" />
<jxb:typesafeEnumMember value="BudgetOnly" name="BudgetOnly" />
<jxb:typesafeEnumMember value="Frozen" name="Frozen" />
<jxb:typesafeEnumMember value="Reserved" name="Reserved" />
<jxb:typesafeEnumMember value="Cancelled" name="Cancelled" />
</jxb:typesafeEnumClass>
</jxb:bindings>

编写正确的 XPath 查询非常重要,结果是:

List<AccountStatus> statuses

在客户端 stub 类上生成的代码。

关于java - JAX-WS No Enum 生成解析带有限制列表(枚举)的 WSDL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34018375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com