2011-04-18 107 views
1

我擁有目前無法連接的Web服務的WSDL。 Web服務有一個名爲ExecuteCommand方法,它返回一個CommandResult CommandResult樣子:Webservice XML響應反序列化

string ResultMessage; 
DataSet ResultDataset; 
bool ResultSuccess; 

我已經添加了的WebService作爲一個服務引用,但因爲我目前不能達到實際的WebService,我需要工作關閉一個XML文件(我被告知)WebService將返回的XML響應應該稱爲ExecuteCommand方法。

如果WebService的是工作,我只想做這樣的事情:

MyWebService.ServiceDataInterfaceSoapClient ws = new ServiceDataInterfaceSoapClient(); 
MyWebService.CommandResult result = ws.ExecuteCommand(); 

相反,我想要做的事,如:

MyWebService.CommandResult result = //Load Result from XML file which contains the XML response that ws.ExecuteCommand would return. 

我不知道如何去了解這個。我試圖創建CommandResult類型的XmlSerializer,但在第一行中出現XML解析錯誤。我希望有人能夠給我一個關於如何做到這一點的基本例子。

+0

嘗試使用的DataContractSerializer來代替。 – 2011-04-18 18:07:44

回答

1

我最終搞清楚以下和它做什麼,我需要:

XmlSerializer xml = new XmlSerializer(typeof(CommandResult),"XMLNamespaceFromWSDL"); 
CommandResult cr; 
using (Stream stream = new FileStream("CommandResult.xml", FileMode.Open)) 
    cr = (CommandResult)xml.Deserialize(stream); 
1

聽起來就像你試圖重新創建WCF通常爲你做的一樣。創建一個實現ServiceContract接口的新本地WCF服務可能會更簡單 - SvcUtil爲您創建。在本地服務代碼中,您只需創建一個MyWebService.CommandResult對象並從提供的文件中爲其提供正確的值。這樣客戶端代碼就不需要被修改來使用存儲在文件中的XML響應。即使您試圖使非基於WCF的服務最小化,此方法也可以工作。只需提供SvcUtil WSDL並使用basicHttpBinding來模擬任何基本概要文件(asmx &某些基於Java的)服務。關於如何創建ServiceDataInterfaceSoapClient對象的更多細節將會很有幫助。