gpt4 book ai didi

java - cxf wsdl2java 生成 ArrayOf 而不是 Type[]

转载 作者:行者123 更新时间:2023-12-02 04:01:04 24 4
gpt4 key购买 nike

我正在使用 cxf wsdl2java 命令行命令来生成客户端(java 文件)。我的 xsd 看起来像这样 -

<xs:complexType name="ArrayOfString">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="string" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="ConfirmSMSResults">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="1" name="sessionId" type="xs:string"/>
<xs:element maxOccurs="1" minOccurs="1" name="smsIds" type="tns:ArrayOfString"/>
</xs:sequence>
</xs:complexType>

生成的java文件ConfirmSMSResults.java有这样的内容

@XmlElement(必需= true)
protected ArrayOfString smsIds;

它应该在哪里protected String[] smsIds;

我在 xsd 文件中定义的 date 数据类型也遇到了类似的问题,该数据类型已转换为 XMLGregorianCalendar。但是,我通过使用外部 xjb 文件并在那里定义绑定(bind)来解决这个问题。可以查到here 。我似乎找不到与我的数组问题类似的东西。

提前谢谢您。

最佳答案

你说的是

it should be protected String[] smsIds

事实上你的 XSD 并没有这么说。

你的XSD说smsIDs是一个ArrayOfString类型的complexType,它在顶部定义,CXF将创建一个相应的对象ArrayOfString。其中有一个名为 string 的元素,它可以出现多次,因此您可能会在它为 XSD 生成的 ArrayOfString 对象中找到您的数组/列表。

如果您想删除该包装对象,则必须在 XSD 中更改此内容:

<xs:element maxOccurs="1" minOccurs="1" name="smsIds" type="tns:ArrayOfString"/>

<xs:element maxOccurs="unbounded" minOccurs="0" name="smsIds" type="xsd:string"/>

关于java - cxf wsdl2java 生成 ArrayOf<Type> 而不是 Type[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34889802/

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