C# 如何使用WS-Address手动反序列化SOAP响应
我需要将XML文档解析为当前脱机的Web服务的返回值。所以我想在等待它的可用性时创建一个立面。这是一个示例:C# 如何使用WS-Address手动反序列化SOAP响应,c#,soap,xml-deserialization,C#,Soap,Xml Deserialization,我需要将XML文档解析为当前脱机的Web服务的返回值。所以我想在等待它的可用性时创建一个立面。这是一个示例: <?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing"> <env:Header>
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing">
<env:Header>
<wsa:MessageID>urn:AD90B9C079ED11E3BF6E3900E216CC13</wsa:MessageID>
<wsa:ReplyTo>
<wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>
<wsa:ReferenceParameters>
<instra:tracking.ecid xmlns:instra="http://xmlns.oracle.com/sca/tracking/1.0">cd42df45b193f389:55338234:143243fa919:-8000-0000000000432eda</instra:tracking.ecid>
</wsa:ReferenceParameters>
</wsa:ReplyTo>
<wsa:FaultTo>
<wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>
<wsa:ReferenceParameters>
<instra:tracking.ecid xmlns:instra="http://xmlns.oracle.com/sca/tracking/1.0">cd42df45b193f389:55338234:143243fa919:-8000-0000000000432eda</instra:tracking.ecid>
</wsa:ReferenceParameters>
</wsa:FaultTo>
</env:Header>
<env:Body>
<db:BancosDbOutput xmlns:db="http://xmlns.oracle.com/pcbpel/adapter/db/recuperaBancosDb">
<db:recuperaBancosDbOutput>
<db:nomeBanco>BANCO ABC BRASIL S.A.</db:nomeBanco>
<db:numeroBanco>246</db:numeroBanco>
<db:pais>Brasil</db:pais>
</db:recuperaBancosDbOutput>
<db:recuperaBancosDbOutput>
<db:nomeBanco>BANCO A.J.RENNER S.A.</db:nomeBanco>
<db:numeroBanco>654</db:numeroBanco>
<db:pais>Brasil</db:pais>
</db:recuperaBancosDbOutput>
</db:BancosDbOutput>
</env:Body>
</env:Envelope>
关于如何实现这一点,您是否有任何线索?您是否引用了提供与
BancosDbOutput
关联的程序集?我得到了WSDL.exe生成的类;我没有访问webservice程序集本身的权限
private bool SOAPDeserialize<T>(string filePath, out T ClassObj)
{
using(FileStream fs = new FileStream(filePath, FileMode.Open))
{
try
{
SoapFormatter soap = new SoapFormatter();
soap.AssemblyFormat = FormatterAssemblyStyle.Simple;
ClassObj = (T) soap.Deserialize(fs);
}
catch (SerializationException ex)
{
ClassObj = default(T);
return false;
}
}
return true;
}