当前位置:编程学习 > C#/ASP.NET >>

SOAP消息反序列化

收到SOAP消息,需要对其反序列化为对象,求如何定义对象? 

<?xml version="1.0" encoding="GB2312"?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
<soapenv:Body> 
<mbos:callResponse xmlns:mbos="mboss-esb"> 
<osb:recvData xmlns:osb="mboss-esb/osb"> 
<![CDATA[ 
content. 
]]> 
</osb:recvData> 
</mbos:callResponse> 
</soapenv:Body> 
</soapenv:Envelope> 

反序列化代码: 

public static object SoapDeserialize(string txt) 

   object myObj; 

System.Text.UTF8Encoding utf8 = new System.Text.UTF8Encoding(); 
byte[] data = utf8.GetBytes(txt); 

using (MemoryStream ms= new MemoryStream(data)) 

SoapFormatter formatter = new SoapFormatter(); 
myObj = (object)formatter.Deserialize(ms); 
   } 

   return myObj; 

--------------------编程问答-------------------- 估计没有人会啊!赶紧结贴吧!哈哈哈! --------------------编程问答-------------------- 不是吧~~~,SOAP很常见吧?! --------------------编程问答-------------------- 添加引用时,会生成代理类,同时相关的参数类、返回类也会生成在代理类的文件里。 --------------------编程问答-------------------- 没看明白你的意思 ?你返回的myObj不就是对象吗?你需要什么东西,再从myObj取不就可以了吗 --------------------编程问答-------------------- 你把myObj进行一下如下定义试试:
[DataContract]
[XmlRoot(Namespace = "", ElementName = "")]

[DataMember(Name = "", Order = 1)]
[XmlElement(ElementName = "")]

--------------------编程问答-------------------- 给你一个泛型xml反序列化方法:
        public T Deserialize<T>(XElement xe)
        {
            T returnObject = default(T);
            try
            {
                XmlSerializer serializer = new XmlSerializer(typeof(T));
                returnObject = (T)serializer.Deserialize(xe.CreateReader());
            }
            catch
            {
            }
            return returnObject;
        } --------------------编程问答-------------------- 在WebSerivce中不用自己去反序列化。直接用引用中的类型就可以了 --------------------编程问答-------------------- WCF的序列化/反序列化是通过DataContract来完成的,但是,DataContract只能操作xml element,不能序列化/反序列化XmlAttribute的,早期的SOAP是有人习惯用XmlAttribute,这个时候必须用XmlSerializer 进行反序列化的 --------------------编程问答-------------------- 要反序列化生成对象吗?
soap消息格式是固定的~~根据节点来作为类的属性不就完了?
补充:.NET技术 ,  Web Services
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,