原文:http://blog.csdn.net/otong/article/details/7894059

序列化或反序列化成一个字符串:

方法一:

序列化:

  1. public static string XMLSerialize<T>(T entity)
  2. {
  3. StringBuilder buffer = new StringBuilder();
  4. XmlSerializer serializer = new XmlSerializer(typeof(T));
  5. using (TextWriter writer = new StringWriter(buffer))
  6. {
  7. serializer.Serialize(writer, entity);
  8. }
  9. return buffer.ToString();
  10. }

反序列化:

  1. public static T DeXMLSerialize<T>(string xmlString)
  2. {
  3. T cloneObject = default(T);
  4. StringBuilder buffer = new StringBuilder();
  5. buffer.Append(xmlString);
  6. XmlSerializer serializer = new XmlSerializer(typeof(T));
  7. using (TextReader reader = new StringReader(buffer.ToString()))
  8. {
  9. Object obj = serializer.Deserialize(reader);
  10. cloneObject = (T)obj;
  11. }
  12. return cloneObject;
  13. }

方法二:

  1. /// <summary>
  2. /// 对象序列化成 XML String
  3. /// </summary>
  4. public static string XmlSerialize<T>(T obj)
  5. {
  6. string xmlString = string.Empty;
  7. XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
  8. using (MemoryStream ms = new MemoryStream())
  9. {
  10. xmlSerializer.Serialize(ms, obj);
  11. xmlString = Encoding.UTF8.GetString(ms.ToArray());
  12. }
  13. return xmlString;
  14. }
  15. /// <summary>
  16. /// XML String 反序列化成对象
  17. /// </summary>
  18. public static T XmlDeserialize<T>(string xmlString)
  19. {
  20. T t = default(T);
  21. XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
  22. using (Stream xmlStream = new MemoryStream(Encoding.UTF8.GetBytes(xmlString)))
  23. {
  24. using (XmlReader xmlReader = XmlReader.Create(xmlStream))
  25. {
  26. Object obj = xmlSerializer.Deserialize(xmlReader);
  27. t = (T)obj;
  28. }
  29. }
  30. return t;
  31. }

如果要序列化到一个文件,则使用FileStream就可以了

如:

string strFile = @"c:/book.xml";
            using (FileStream fs = new FileStream(strFile, FileMode.Create))
            {
                XmlSerializer formatter = new XmlSerializer(typeof(T));
                formatter.Serialize(fs, entity);
            }

附:其实还可以直接用SringWriter

StringBuilder sb = new StringBuilder();
System.IO.StringWriter writer = new System.IO.StringWriter(sb);

XmlSerializer formatter = new XmlSerializer(typeof(T));
formatter .Serialize(writer,entity );

一个可序列化的C#对象,如何转成一个XML格式的文件或字符串【转】的更多相关文章

  1. 如何将excel中的一个表格内容转成xml格式的文件

    转自:http://www.cnblogs.com/sansi/archive/2012/02/06/2340471.html 感谢作者,解决了折磨我几天的问题,顿时心情开朗~ ----------- ...

  2. 将Java对象序列化成JSON和XML格式

    1.先定义一个Java对象Person: public class Person { String name; int age; int number; public String getName() ...

  3. 谁能在同一文件序列化多个对象并随机读写(反序列化)?BinaryFormatter、SoapFormatter、XmlSerializer还是BinaryReader

    谁能在同一文件序列化多个对象并随机读写(反序列化)?BinaryFormatter.SoapFormatter.XmlSerializer还是BinaryReader 随机反序列化器 +BIT祝威+悄 ...

  4. Android中SharedPreferences和序列化结合保存对象数据

    前言: 最近在做用户注册的时候,遇到了需要填写很多表单数据,不可能在一页把所有的数据都展示完全,因此采用了分页的方式,由于在用户填写数据数据之后我们需要对用户填写的数据进行暂时的记录的,当用户会到此页 ...

  5. redis采用序列化方案存对象

    前几天被问到这样一个问题,redis怎么存对象,平时也没怎么注意,只知道redis存字符之类的,不过就是根据键存取值,不过对象的话还是不同的 首先来了解一下为什么要实现序列化 为什么要实现序列化接口 ...

  6. js中JSON的解析(将json字符串转化为对象)和序列化(将对象转化为json字符串)(函数的功能一般都挺全的,需要的时候去查看完整函数)

    js中JSON的解析(将json字符串转化为对象)和序列化(将对象转化为json字符串)(函数的功能一般都挺全的,需要的时候去查看完整函数) 一.总结 1.JSON解析:JSON.parse(myJS ...

  7. JSON和XML格式与对象的序列化及反序列化的辅助类

    下面的代码主要是把对象序列化为JSON格式或XML格式等 using System; using System.Collections.Generic; using System.Globalizat ...

  8. 用非常硬核的JAVA序列化手段实现对象流的持久化保存

    目录 背景 对象流的概念 对象流实例 引入一张组织结构图 定义组织架构图的类 类的完整结构 用对象流保存组织架构的对象信息 核心代码 用对象流读取文件并输出 核心代码 总结 背景 在OOP(面向对象编 ...

  9. 如果你的Serializable类包含一个不可序列化的成员,会发生什么?你是如何解决的?

    任何序列化该类的尝试都会因NotSerializableException而失败,但这可以通过在 Java中 为 static 设置瞬态(trancient)变量来轻松解决. Java 序列化相关的常 ...

随机推荐

  1. hadoop2.2.0集群搭建与部署

    原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3818908.html 一.安装环境 1.系统环境 CentOS  6.4 2.集群机器节点ip 节点一i ...

  2. 【memcache缓存专题(1)】memcache的介绍与应用场景

    简介 Memcached是一个高性能的分布式的内存对象缓存系统,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各 ...

  3. 【Linux高频命令专题(5)】rmdir

    简述 rmdir是常用的命令,该命令的功能是删除空目录,一个目录被删除之前必须是空的.(注意,rm - r dir命令可代替rmdir,但是有很大危险性.)删除某目录时也必须具有对父目录的写权限. 命 ...

  4. kmalloc/kfree,vmalloc/vfree函数用法和区别

    http://blog.csdn.net/tigerjibo/article/details/6412881 kmalloc/kfree,vmalloc/vfree函数用法和区别 1.kmalloc ...

  5. jvm调优具体参数配置

    3.JVM参数 在JVM启动参数中,可以设置跟内存.垃圾回收相关的一些参数设置,默认情况不做任何设置JVM会工作的很好,但对一些配置很好的Server和具体的应用必须仔细调优才能获得最佳性能.通过设置 ...

  6. SQL Server数据导入导出的几种方法

    在涉及到SQL Server编程或是管理时一定会用到数据的导入与导出, 导入导出的方法有多种,结合我在做项目时的经历做一下汇总: 1. SQL Server导入导出向导,这种方式是最方便的. 导入向导 ...

  7. 项目SVN的IP地址发生变化时修改SVN为新的IP地址

    在eclipse或者Myeclipse自带的svn:subclipse中修改ip地址 项目开发中有可能要修改SVN的IP地址,entries文件里面包含svn服务器的地址信息.每个文件夹都会产生一个e ...

  8. mongodb管理工具rockmongo

    mongodb的图像管理工具非常之多,我用的是rockmongo. RockMongo 是一个PHP5写的MongoDB管理工具. 主要特征: 使用宽松的New BSD License协议 速度快,安 ...

  9. DNSget Ip

    var address = Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault(a => a.AddressFamily ...

  10. Java基础——关键字

    volatile 用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最的值.volatile很容易被误用,用来进行原子性操作. 对于volatile修饰的变量,jvm虚拟机只 ...