如何在WSDL文件的`element`标签内生成'minOccurs'和'maxOccurs'属性值?

时间:2018-11-27 14:37:57

标签: java apache web-services wsdl axis

我们有部署在JBoss中的自定义Java代码。我们正在触发Web服务调用,并且正在使用WSDL框架来生成Apache Axis文件。

我的问题是对于某些标签,minOccursmaxOccurs属性存在,但是对于其他一些标签,这些属性不存在。

如果我想在元素标签内添加minOccursmaxOccurs属性,那么我必须在哪里配置?这个Apache Axis框架将如何生成这些属性。

WSDL示例:

<wsdl:definitions xmlns:apachesoap="http://xml.apache.org/xml-soap" 
xmlns:impl="urn:sif.siperian.com" xmlns:intf="urn:sif.siperian.com" 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
targetNamespace="urn:sif.siperian.com">
<!--
WSDL created by Apache Axis version: 1.3
Built on Oct 05, 2005 (05:23:37 EDT)
-->
<wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" 
elementFormDefault="qualified" targetNamespace="urn:sif.siperian.com">
<complexType name="Account">
<sequence>
<element name="accountNumber" nillable="true" type="xsd:string"/>
<element name="accountType" nillable="true" type="xsd:string"/>
<element name="cardholderName" nillable="true" type="xsd:string"/>
<element name="city" nillable="true" type="xsd:string"/>
<element name="expirationMonth" nillable="true" type="xsd:string"/>
<element name="expirationYear" nillable="true" type="xsd:string"/>
<element name="hubStateInd" nillable="true" type="xsd:string"/>
<element name="issuingCompany" nillable="true" type="xsd:string"/>
<element name="pkeySrcObject" nillable="true" type="xsd:string"/>
<element name="postalCode" nillable="true" type="xsd:string"/>
<element name="rowidObject" nillable="true" type="xsd:string"/>
<element name="securityCode" nillable="true" type="xsd:string"/>
<element name="source" nillable="true" type="xsd:string"/>
<element name="stateProvince" nillable="true" type="xsd:string"/>
<element name="streetName" nillable="true" type="xsd:string"/>
</sequence>
</complexType>

<complexType name="ArrayOfAccount">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="item" 
type="impl:Account"/>
</sequence>
</complexType>

</schema>
</wsdl:types>
</wsdl:definitions>

在以上WSDL中,<complexType name="Account">没有属性minOccursmaxOccurs

<complexType name="ArrayOfAccount">同时具有这两个属性。

1 个答案:

答案 0 :(得分:0)

以下是有关如何构建以下元素的Java代码示例:

<element maxOccurs="1" minOccurs="0" name="Test" nillable="true" type="xsd:string"/> 

Java代码:

elemField = new org.apache.axis.description.ElementDesc();
elemField.setFieldName("test");
elemField.setXmlName(new javax.xml.namespace.QName("http://www.test.com", "Test"));
elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
elemField.setMinOccurs(0);
elemField.setNillable(true);

希望这会有所帮助。