webservice在工作中用到的很多,基本都是以XML格式问通讯内容,其中最关键的就是XML串的序列化及反序列化。
XML的运用中有两种信息传递,一种为XML的请求信息,另一种为返回信息,要运用XML,首先要为这两种返回信息新建实体类。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Xml.Serialization; namespace Test1
{
[Serializable]
public class RequestBase
{
[XmlElement(Order = )]
public string Name
{
get;
set;
} [XmlElement(Order = )]
public string Age
{
get;
set;
} }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Xml.Serialization; namespace Test1
{
[Serializable]
public class ResponseBase
{
[XmlElement(Order = )]
public string Information
{
get;
set;
}
}
}
然后编写将XML序列化和反序列化的方法:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Xml.Serialization;
using System.IO; namespace Test1
{
public class Function
{
//反序列化
public static T Deserialize<T>(string xml)
{
XmlSerializer xs = new XmlSerializer(typeof(T));
StringReader sr = new StringReader(xml);
T obj = (T)xs.Deserialize(sr);
sr.Close();
sr.Dispose();
return obj;
} //序列化
public static string Serializer<T>(T t)
{
XmlSerializerNamespaces xsn = new XmlSerializerNamespaces();
xsn.Add(string.Empty, string.Empty);
XmlSerializer xs = new XmlSerializer(typeof(T));
StringWriter sw=new StringWriter();
xs.Serialize(sw, t, xsn);
string str = sw.ToString();
sw.Close();
sw.Dispose();
return str;
}
}
}
然后再具体实现将请求信息通过代码处理变成返回信息的方法:
public string Test(string xml)
{
RequestBase request = Function.Deserialize<RequestBase>(xml);
ResponseBase response = new ResponseBase();
response.Information = "姓名:" + request.Name + " 年龄为:" + request.Age;
return Function.Serializer<ResponseBase>(response);
}
示例XML:<?xml version="1.0" encoding="utf-8"?><RequestBase><Name>逗你玩</Name><Age>25</Age></RequestBase>
返回值为:
<string xmlns="http://tempuri.org/">
<?xml version="1.0" encoding="utf-16"?> <ResponseBase> <Information>姓名:逗你玩 年龄为:</Information> </ResponseBase>
</string>