我已经提供了以下XML请求作为跟随WSDL的模型。
<xs:complexType name="commonInput">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="propertyList" nillable="true" type="tns:commonProperty" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="commonProperty">
<xs:sequence>
<xs:element minOccurs="0" name="context" type="xs:string" />
<xs:element minOccurs="0" name="name" type="xs:string" />
<xs:element minOccurs="0" name="value" type="xs:string" />
</xs:sequence>
</xs:complexType>
我希望在代码中使用这些类型创建一个响应来创建类似于以下内容的
<commonInput>
<loginId></loginId>
<propertyList>
<context></context>
<name></name>
<value></value>
</propertyList>
<propertyList>
<context></context>
<name></name>
<value></value>
</propertyList>
</commonInput>
我遇到的问题是我无法弄清楚如何在代码中创建这个结构,因为commonInput.propertyList不是数组或列表,它只是一个类。
如何在commonInput?
答案 0 :(得分:1)
您的班级commonInput
有一个名为propertyList
的属性,该属性是commonProperty
类型的实体序列。请注意包含其定义的<xs:sequence>
标记。
所以你应该可以使用类似的东西:
private List<CommonProperty> propertyList = new ArrayList<CommonProperty>();
我不确定您使用哪种XML格式转换为&#34;类&#34;。 我们使用Jaxb自动在XML和java类之间进行转换。
在回复您的评论时,我会尝试用一个例子来澄清: 我们的WSDL定义:
<s:complexType name="ArrayOfTEKLeverancierObj">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="TEKLeverancierObj"
nillable="true" type="tns:TEKLeverancierObj" />
</s:sequence>
</s:complexType>
在我们的java类中,这转换为:
public class ArrayOfTEKLeverancierObj {
@XmlElement(name = "TEKLeverancierObj", nillable = true)
protected List<TEKLeverancierObj> tekLeverancierObj;