一个可序列化的C#对象,如何转成一个XML格式的文件或字符串【转】
原文:http://blog.csdn.net/otong/article/details/7894059
序列化或反序列化成一个字符串:
方法一:
序列化:
- public static string XMLSerialize<T>(T entity)
- {
- StringBuilder buffer = new StringBuilder();
- XmlSerializer serializer = new XmlSerializer(typeof(T));
- using (TextWriter writer = new StringWriter(buffer))
- {
- serializer.Serialize(writer, entity);
- }
- return buffer.ToString();
- }
反序列化:
- public static T DeXMLSerialize<T>(string xmlString)
- {
- T cloneObject = default(T);
- StringBuilder buffer = new StringBuilder();
- buffer.Append(xmlString);
- XmlSerializer serializer = new XmlSerializer(typeof(T));
- using (TextReader reader = new StringReader(buffer.ToString()))
- {
- Object obj = serializer.Deserialize(reader);
- cloneObject = (T)obj;
- }
- return cloneObject;
- }
方法二:
- /// <summary>
- /// 对象序列化成 XML String
- /// </summary>
- public static string XmlSerialize<T>(T obj)
- {
- string xmlString = string.Empty;
- XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
- using (MemoryStream ms = new MemoryStream())
- {
- xmlSerializer.Serialize(ms, obj);
- xmlString = Encoding.UTF8.GetString(ms.ToArray());
- }
- return xmlString;
- }
- /// <summary>
- /// XML String 反序列化成对象
- /// </summary>
- public static T XmlDeserialize<T>(string xmlString)
- {
- T t = default(T);
- XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
- using (Stream xmlStream = new MemoryStream(Encoding.UTF8.GetBytes(xmlString)))
- {
- using (XmlReader xmlReader = XmlReader.Create(xmlStream))
- {
- Object obj = xmlSerializer.Deserialize(xmlReader);
- t = (T)obj;
- }
- }
- return t;
- }
如果要序列化到一个文件,则使用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格式的文件或字符串【转】的更多相关文章
- 如何将excel中的一个表格内容转成xml格式的文件
转自:http://www.cnblogs.com/sansi/archive/2012/02/06/2340471.html 感谢作者,解决了折磨我几天的问题,顿时心情开朗~ ----------- ...
- 将Java对象序列化成JSON和XML格式
1.先定义一个Java对象Person: public class Person { String name; int age; int number; public String getName() ...
- 谁能在同一文件序列化多个对象并随机读写(反序列化)?BinaryFormatter、SoapFormatter、XmlSerializer还是BinaryReader
谁能在同一文件序列化多个对象并随机读写(反序列化)?BinaryFormatter.SoapFormatter.XmlSerializer还是BinaryReader 随机反序列化器 +BIT祝威+悄 ...
- Android中SharedPreferences和序列化结合保存对象数据
前言: 最近在做用户注册的时候,遇到了需要填写很多表单数据,不可能在一页把所有的数据都展示完全,因此采用了分页的方式,由于在用户填写数据数据之后我们需要对用户填写的数据进行暂时的记录的,当用户会到此页 ...
- redis采用序列化方案存对象
前几天被问到这样一个问题,redis怎么存对象,平时也没怎么注意,只知道redis存字符之类的,不过就是根据键存取值,不过对象的话还是不同的 首先来了解一下为什么要实现序列化 为什么要实现序列化接口 ...
- js中JSON的解析(将json字符串转化为对象)和序列化(将对象转化为json字符串)(函数的功能一般都挺全的,需要的时候去查看完整函数)
js中JSON的解析(将json字符串转化为对象)和序列化(将对象转化为json字符串)(函数的功能一般都挺全的,需要的时候去查看完整函数) 一.总结 1.JSON解析:JSON.parse(myJS ...
- JSON和XML格式与对象的序列化及反序列化的辅助类
下面的代码主要是把对象序列化为JSON格式或XML格式等 using System; using System.Collections.Generic; using System.Globalizat ...
- 用非常硬核的JAVA序列化手段实现对象流的持久化保存
目录 背景 对象流的概念 对象流实例 引入一张组织结构图 定义组织架构图的类 类的完整结构 用对象流保存组织架构的对象信息 核心代码 用对象流读取文件并输出 核心代码 总结 背景 在OOP(面向对象编 ...
- 如果你的Serializable类包含一个不可序列化的成员,会发生什么?你是如何解决的?
任何序列化该类的尝试都会因NotSerializableException而失败,但这可以通过在 Java中 为 static 设置瞬态(trancient)变量来轻松解决. Java 序列化相关的常 ...
随机推荐
- hadoop:could only be replicated to 0 nodes, instead of 1
在Hadoop的环境搭建过程中,常常会遇到类似这样的错误信息提示:“could only be replicated to 0 nodes, instead of 1 ”,产生这样的错误原因有多种,这 ...
- BZOJ 1982 Moving Pebbles
首先我们假设只有两堆, 容易发现当且仅当两堆相等时,先手必败 否则先手必胜 然后我们猜测一下原因: ->当两堆相等时,无论先手怎么做,后手总能使两堆相等,且必败态为0,0 推广一下: 当所有的石 ...
- lintcode:Compare Strings 比较字符串
题目: 比较字符串 比较两个字符串A和B,确定A中是否包含B中所有的字符.字符串A和B中的字符都是 大写字母 样例 给出 A = "ABCD" B = "ACD" ...
- iOS开发--计时器-NSTimer与CADisplayLink
如果程序要让某个方法重复执行,可以借助定时器来完成.CADisplayLink是一个能让我们以和屏幕刷新率相同的频率将内容画到屏幕上的定时器,NSTimer的精确度低了点,比如NSTimer的触发时间 ...
- WP布局之Pivot和Panorama
一.Pivot控件(枢轴控件) Pivot主要用于管理应用中的视图或者页面,此控件在WP中几乎处处可见,不管是短信的左右滑动,还是QQ的左右滑动都是此控件的功劳. 就是图片中的控件,是不是很熟悉呢. ...
- [cocoapods] 如何卸载工程里的cocoapods
1. 打开自己的工程所在文件夹 删除这4个文件 2. 打开工程,把红线的东西都删除掉 3. 只留下原来的4个,其余都删除掉
- (转)SSI开发环境搭建
本文转自:http://blog.csdn.net/lifuxiangcaohui/article/details/7187869 先来点文字性的描述: MVC对于我们来说,已经不陌生了,它起源于20 ...
- renameTo()方法的用法
使用renameTo()方法,可以将文件data.txt从C:\JavaApp\IOTest1\目录移动到C:\目录,并改名为newdata.txt import java.io.File; //将文 ...
- EF之MSSQL分布式部署一:EFContext自定义数据库链接
不废话,上代码: 来源:http://bbs.csdn.net/topics/390823046 原文地址:EF之MSSQL分布式部署一:EFContext自定义数据库链接 /// <sum ...
- WebView点击加载的页面中的按钮时不弹出新窗口以及在加载后执行javascript
mWebView.setWebViewClient(new WebViewClient() { //点击网页中按钮时,在原页面打开 public boolean shouldOverrideUrlLo ...