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>

  

C#的XML序列化及反序列化的更多相关文章

  1. XML 序列化与反序列化

    XML序列化与反序列化 1.将一个类转化为XML文件 /// <summary> /// 对象序列化成XML文件 /// </summary> /// <param na ...

  2. XmlSerializer 对象的Xml序列化和反序列化

    http://www.cnblogs.com/yukaizhao/archive/2011/07/22/xml-serialization.html 这篇随笔对应的.Net命名空间是System.Xm ...

  3. .NET XML序列化与反序列化

    闲着没事,写了两个通用的XML序列化与反序列化的方法. 贴出来当作笔记吧! /// <summary> /// XML序列化 /// </summary> /// <ty ...

  4. XmlSerializer 对象的Xml序列化和反序列化,XMLROOT别名设置

    这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间.   为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中 ...

  5. c# XML序列化与反序列化

    c# XML序列化与反序列化 原先一直用BinaryFormatter来序列化挺好,可是最近发现在WinCE下是没有办法进行BinaryFormatter操作,很不爽,只能改成了BinaryWrite ...

  6. Xml序列化、反序列化帮助类

    之前从网络上找了一个Xml处理帮助类,并整理了一下,这个帮助类针对Object类型进行序列化和反序列化,而不需要提前定义Xml的结构,把它放在这儿供以后使用 /// <summary> / ...

  7. Windows phone 之XML序列化与反序列化

    为什么要做序列化和反序列化? 一个回答: 我们都知道对象是不能在网络中直接传输的,不过还有补救的办法.XML(Extensible Markup Language)可扩展标记语言,本身就被设计用来存储 ...

  8. C#操作Xml:XmlSerializer 对象的Xml序列化和反序列化

    这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间. 为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中的对 ...

  9. C#实现接口xml序列化与反序列化

    C#实现接口xml序列化与反序列化   C#中接口无法被xml序列化,提示不支持.百度和bing也搜不到,只好自己动手写了 原理上肯定支持,.Net自己的xml序列化有一个IXmlSerializab ...

随机推荐

  1. 订餐系统之Excel批量导入

    批量导入现在基本已经成为各类系统的标配了,当前,我们订餐系统也不例外,什么商家呀.商品呀.优惠码之类的,都少不了.毕竟嘛,对非开发人员来说,看到Excel肯定比看到很多管理系统还是要亲切很多的.这里, ...

  2. 千万别把WIFI玩坏了!关于WIFI的新鲜玩法和商业模式探讨

    使用WIFI作为无线上网接入,也许大家都比较习以为常的.但是你们知道吗,其实WIFI还有很多种玩法:基于WIFI的身份识别,WIFI感知,WIFI Direct等等.今天我们会着重介绍一种WIFI的有 ...

  3. 【Python】[进程和线程]多进程,多线程,ThreadLocal,进程VS.线程,分布式进程

    1.多进程,multiprocessing模块,   进程间的通信:Queue[队列],Pipes[管子]2.多线程,    注意:线程公用变量,混乱   解决方法Lock:因为只有一个锁,所以当要执 ...

  4. 一个key 在10w k/v 找到对应的. (B-tree), 这10w放进B-tree 会有多少层.

    B-tree是二叉平衡查找树,相邻两层节点层数不超过1 所有10w 即 2^16=65536 < 10w < 2^17=131072: 会有17层,最多查询17次.

  5. css样式加载顺序及覆盖顺序深入理解

    注:内容转载 很多的新手朋友们对css样式加载顺序和覆盖顺序的理解有所偏差,下面用示例为大家详细的介绍下,感兴趣的朋友不要错过 { height: 100%; width: 200; position ...

  6. 推公式 HDU 2552

    T 给你2个值 求另外一个 需要推一下 tan(a+b)=(tan(a)+tan(b))/(1-tan(a)*tan(b)); 等式左右取tan tan(atan(a))=a 1/s=tan(...) ...

  7. 读取本地外网IP地址

    读取本地外网IP地址. 根据启动并运行的网卡名称,找到本机实际的IP地址(已知当前运行的无线网卡名包含某一个字符) import java.net.InterfaceAddress; import j ...

  8. 81.Android之沉浸式状态栏攻略

    转载:http://blog.csdn.net/lmj623565791/article/details/48649563/ 一.概述 近期注意到QQ新版使用了沉浸式状态栏,ok,先声明一下:本篇博客 ...

  9. mysql日期格式化

    DATE_FORMA T(date, format) 根据格式串format 格式化日期或日期和时间值date,返回结果串. 可用DATE_FORMAT( ) 来格式化DATE 或DATETIME 值 ...

  10. 1.0、Struts2的简单搭建方法

    一.Struts2:是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet:用于jsp页面与Java代码之间的交互. 1.核心:Filter拦截器,对所有的请求进行拦截. 2.工作 ...