2011-05-11 38 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