2011-05-11 39 views
0

我正在开发一个新应用程序的GUI(WPF),该应用程序将发送各种SOAP请求并获取将使用通用格式形成的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

我建议先为您定义一个XML模式使用XSD肥皂消息。

一旦你有一个模式,你可以使用下面的生成类:

从Visual Studio 2010的命令提示符下运行
XSD.EXE schema.xsd /班/语言:[CS | VB。

现在您已经有了一个类,您可以使用XML Serialization将对象转换为XML,并使用通过XSD生成的类从XML转换为对象。

这些步骤不需要手动编写代码来检查/解析XML。

+0

感谢您的提示。使用你列出的方法,我的示例中的值是否会正确填充Min/Max属性?是否知道将部分中的值链接到部分中的属性名称? – Flack 2011-05-12 03:06:24

+0

根据你的例子,我看到你的元数据(DataSchema)被定义为一个XSD模式,用于生成一个用于在Soap消息中通过序列化传输数据的类。这允许将c0和c1的值加载到对象中。 我的答案的目的是尝试并指导您避免编写解析和XML并将XML转换为对象的代码。 – Zamboni 2011-05-12 03:56:21