C# 创建类的多个实例以匹配XML
我已经收到了以下XML请求,作为与WSDL一起遵循的模型C# 创建类的多个实例以匹配XML,c#,soap,wsdl,C#,Soap,Wsdl,我已经收到了以下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 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中创建propertyList的多个实例?您的类
commonInput
具有一个名为propertyList
的属性,该属性是类型为commonProperty
的一系列实体。请注意包含其定义的
标记
因此,您应该能够使用以下内容:
private List propertyList=new ArrayList()代码>
我不太确定从XML到“类”的转换是什么。
我们使用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;
公共类ArrayOfTEKLeverancierObj{
@XmlElement(name=“TEKLeverancierObj”,nillable=true)
受保护的名单;
我理解这部分内容,但我关心的是将列表分配给commonInput.propertyList。因为它没有定义为列表(只是一个类)我可以这样做吗?我不相信这会起作用。用我们自己的应用程序中的一些工作示例代码更新了我的答案。希望这会有帮助?谢谢。这确实有助于理解结构。最终的问题是,由于架构的配置方式,我需要在我们自己的代码中将列表转换为数组。很高兴这有帮助,相信我,你不是唯一一个最近因为WSDL的问题而头疼的人;)