好。标题确实说明了一切。

我有一个在Java应用程序中调用的超大型SOAP服务器。为了使生活更轻松,我一直在使用wsimport生成服务的源代码和jar。我只是遇到一个问题。当我需要将wsdl中的所有xsd:int类型作为Integer类型时,都将它们解析为java代码中的int类型。原因是我需要将一些int设置为null,但是由于int类型不能为null,所以我不能这样做。

我目前正在检查并手动更改字段,但是我想知道是否有更简单的方法可以通过对wsimport命令进行汇总来实现

这是我当前的wsimport命令。谢谢

wsimport.exe -d E:\ServiceWSBuild -p com.example.wsdl -s E:\Service\src -verbose http://wsdl.example.com/?wsdl


这也是执行此操作的一种自定义类型的示例:

 <xsd:complexType name="SubPackageSell">
  <xsd:complexContent>
   <xsd:extension base="tns:APIObject">
  <xsd:sequence>
   <xsd:element name="sp" type="tns:SubPackage"/>
   <xsd:element name="value" type="xsd:int"/>
   <xsd:element name="days" type="xsd:int"/>
   <xsd:element name="date" type="xsd:string"/>
   <xsd:element name="combine" type="xsd:boolean"/>
  </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

最佳答案

对于元素,请指定minOccurs="0",wsimport应该生成一个java.lang.Integer而不是原始的intminOccursmaxOccurs的默认值为1,这就是为什么要获取原始int的原因。例如:

<xsd:element name="value" type="xsd:int" minOccurs="0"/>

10-08 15:00