原文: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. 再谈PCA

        其实之前写过PCA相关的博文,但是由于之前掌握的理论知识有限,所以理解也比较浅.这篇博文,我们以另外一种角度来理解PCA看,这里我假设大家对PCA都有一个初步的了解.首先,我们举一个二维空间中 ...

  2. android源码编译1

    一.环境说明: 1.liunx系统:Ubuntu12.04 2.jdk:sun-java6-jdk 3.g++4.5 gcc4.5 二.android源码的目录结构 |-- Makefile |-- ...

  3. junit浅学笔记

    JUnit是一个回归测试框架(regression testing framework).Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(Wh ...

  4. IEDA常用设置

    安装插件步骤省略,暂时不需要 IDEA菜单详解:基本有对应的快捷键或者是图标Help系列:Find Action:作用:快速新建文件,Ctrl + Shift + AHelp Topics:作用:帮助 ...

  5. gulp browser-sync自动刷新插件

    很久没弄gulp了,都快忘了,今天又来温习下browser-sync 自动刷新插件,在安装的时候出现以下提示: $ npm install browser-sync --save-dev> ws ...

  6. AVL的旋转

    转自http://blog.csdn.net/gabriel1026/article/details/6311339 平衡二叉树在进行插入操作的时候可能出现不平衡的情况,AVL树即是一种自平衡的二叉树 ...

  7. js 中 typeof 的使用

    js中的变量是松散类型(即弱类型)的,可以用来保存任何类型的数据. typeof 可以用来检测给定变量的数据类型,可能的返回值: 'undefined' --- 这个值未定义 'boolean' -- ...

  8. linux中改变文件权限和属性

    Linux中,默认显示所有用户名的文件在/etc/passwd,用户组的信息在/etc/group 密码/etc/shadow chgrp改变文件所属用户组 chgrp [-R] 用户组名 文件或目录 ...

  9. bzoj3994

    智商太低了 详细题解在这里http://blog.csdn.net/zmoiynlp/article/details/45176129 ; ..max] of longint; g:..max] of ...

  10. UVa 10129 Play On Words【欧拉道路 并查集 】

    题意:给出n个单词,问这n个单词能否首尾接龙,即能否构成欧拉道路 按照紫书上的思路:用并查集来做,取每一个单词的第一个字母,和最后一个字母进行并查集的操作 但这道题目是欧拉道路(下面摘自http:// ...