- 类级别的使用 DataContract(Name=“Your Name”,Namespace=“Your Namesapace”)
注:Namespace可以为""
服务端返回:
public HttpResponseMessage XmlResponseResult<T>(T value)
{
HttpResponseMessage result = Request.CreateResponse<T>(HttpStatusCode.OK, value, Configuration.Formatters.XmlFormatter);
return result;
}
- 成员使用DataMember标记
例如:
Namespace=" " 不为空的情况客户端在反序列化的时候可能会出现“不应有 XXXXX”的错误
[DataContract(Name="NodeA",Namespace="")]
public class A{
public A{
listB=new List<B>();
}
[DataMember]
public int Age{get;set;}
...
//如果属性内包含List<T>的数据
[DataMember]
public List<B> listB{get;set;}
}
则在定义B 的时候:
[DataContract(Name="NodeB",Namespace="")]
public class B{
[DataMemberr]
public string filed1{get;set;}
}
注:子类B也必须有DataContract标记 并且Namespace=""可以避免在生成的xml中出现d2p1:filed1的情况,使得客户端反序列化的失败。
客户端反序列化:
public T DeserializeFromXML<T>(string xml)
{
try
{
using (StringReader sr = new StringReader(xml))
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
return (T)serializer.Deserialize(sr);
}
}
catch (Exception ex)
{
throw ex;
}
}