原文: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. hihocoder 1084 扩展KMP && 2014 北京邀请赛 Justice String

    hihocoder 1084 : http://hihocoder.com/problemset/problem/1084 北京邀请赛 Just  String http://www.bnuoj.co ...

  2. 阻止事件冒泡(stopPropagation和cancelBubble)和阻止默认行为(preventDefault和returnValue)

    <div id="divId1" style="width:500px;height:500px;background-color:#3ac;text-align: ...

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

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

  4. Hibernate逍遥游记-第7章 Hibernate的检索策略和检索方式(<set lazy="false" fetch="join">、left join fetch、FetchMode.JOIN、)

    1. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hi ...

  5. js问题总结

    .removeClass(" ") 移除一个css样式 $("#popUpBox i").removeClass("channel_icon" ...

  6. 车牌识别LPR(三)-- LPR系统整体结构

    第三篇:系统的整体架构 LPR系统大体上可由图像采集系统,图像处理系统,数据库管理系统三个子系统组成.它综合了通讯.信息.控制.传感.计算机等各种先进技术,构成一个智能电子系统. 图像采集系统:图像采 ...

  7. ListView(1)几个重要属性,关闭滚动到顶部,底部的动画,item之间的分割线,背景等

    见表: android:stackFromBottom="true" 设置该属性之后你做好的列表就会显示你列表的最下面,值为true和false android:transcrip ...

  8. BZOJ 2004 Bus 公交线路(矩阵)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2004 题意:小Z所在的城市有N个公交车站,排列在一条长(N-1)km的直线上,从左到右依 ...

  9. oracle 判断是不是数值/数字

    1. 利用 to_number CREATE OR REPLACE FUNCTION isnumeric (str IN VARCHAR2)     RETURN NUMBER IS     v_st ...

  10. Android开发之三种动画

    转载:http://www.cnblogs.com/angeldevil/archive/2011/12/02/2271096.html http://www.lightskystreet.com/2 ...