我正在开发一个新应用程序的GUI(WPF),它将发送各种SOAP请求并获取将使用通用格式形成的SOAP响应。以下是一个示例回复:
<SOAP-ENV:Body>
<TheResponse>
<MetaData>
<DataSchema>
<ColumnSchema type="decimal" ref="c0" name="min" />
<ColumnSchema type="decimal" ref="c1" name="max" />
</DataSchema>
</MetaData>
<Data>
<Item>
<c0>0</c0>
<c1>1</c1>
</Item>
</Data>
</TheResponse>
</SOAP-ENV:Body>
如您所见,SOAP响应将定义元数据,然后定义实际数据。我需要根据请求/响应创建不同的对象。在此示例中,对象将具有两个属性Min和Max,其值分别为0和1。
如果我为我知道的对象定义了类,例如:
class MyClass
{
public decimal Min {get; set;}
public decimal Max {get; set;}
}
我如何反序列化SOAP响应以创建适当的对象?
感谢您的帮助。
答案 0 :(得分:0)
我建议首先使用XSD为您的Soap消息定义XML模式。
一旦有了架构,就可以使用以下代码生成一个类:
从Visual Studio 2010命令提示符中,运行
Xsd.exe schema.xsd / classes / language:[CS | VB。
现在你有了一个类,你可以使用XML Serialization使用通过XSD生成的类从对象转换为XML,从XML转换为对象。
这些步骤消除了手动编写代码以检查/解析XML的需要。