[序列化] SerializeHelper--序列化操作帮助类 (转载)
这个类是关于加密,解密的操作,文件的一些高级操作
1.XML序列化
2.Json序列化
3.SoapFormatter序列化
4.BinaryFormatter序列化
看下面代码吧
/// <summary>
/// 类说明:Assistant
/// 编 码 人:苏飞
/// 联系方式:361983679
/// 更新网站:[url=http://www.cckan.net/thread-655-1-1.html]http://www.cckan.net/thread-655-1-1.html[/url]
/// </summary>
using System;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
//using System.Runtime.Serialization.Json;
using System.Runtime.Serialization.Formatters.Soap;
using System.Runtime.Serialization.Formatters.Binary; namespace DotNet.Utilities
{
public class SerializeHelper
{
public SerializeHelper()
{ } #region XML序列化
/// <summary>
/// 文件化XML序列化
/// </summary>
/// <param name="obj">对象</param>
/// <param name="filename">文件路径</param>
public static void Save(object obj, string filename)
{
FileStream fs = null;
try
{
fs = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
XmlSerializer serializer = new XmlSerializer(obj.GetType());
serializer.Serialize(fs, obj);
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (fs != null) fs.Close();
}
} /// <summary>
/// 文件化XML反序列化
/// </summary>
/// <param name="type">对象类型</param>
/// <param name="filename">文件路径</param>
public static object Load(Type type, string filename)
{
FileStream fs = null;
try
{
fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
XmlSerializer serializer = new XmlSerializer(type);
return serializer.Deserialize(fs);
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (fs != null) fs.Close();
}
} /// <summary>
/// 文本化XML序列化
/// </summary>
/// <param name="item">对象</param>
public string ToXml<T>(T item)
{
XmlSerializer serializer = new XmlSerializer(item.GetType());
StringBuilder sb = new StringBuilder();
using (XmlWriter writer = XmlWriter.Create(sb))
{
serializer.Serialize(writer, item);
return sb.ToString();
}
} /// <summary>
/// 文本化XML反序列化
/// </summary>
/// <param name="str">字符串序列</param>
public T FromXml<T>(string str)
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (XmlReader reader = new XmlTextReader(new StringReader(str)))
{
return (T)serializer.Deserialize(reader);
}
}
#endregion #region Json序列化
/// <summary>
/// JsonSerializer序列化
/// </summary>
/// <param name="item">对象</param>
//public string ToJson<T>(T item)
//{
// DataContractJsonSerializer serializer = new DataContractJsonSerializer(item.GetType());
// using (MemoryStream ms = new MemoryStream())
// {
// serializer.WriteObject(ms, item);
// return Encoding.UTF8.GetString(ms.ToArray());
// }
//} ///// <summary>
///// JsonSerializer反序列化
///// </summary>
///// <param name="str">字符串序列</param>
//public T FromJson<T>(string str) where T : class
//{
// DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
// using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(str)))
// {
// return serializer.ReadObject(ms) as T;
// }
//}
#endregion #region SoapFormatter序列化
/// <summary>
/// SoapFormatter序列化
/// </summary>
/// <param name="item">对象</param>
public string ToSoap<T>(T item)
{
SoapFormatter formatter = new SoapFormatter();
using (MemoryStream ms = new MemoryStream())
{
formatter.Serialize(ms, item);
ms.Position = ;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(ms);
return xmlDoc.InnerXml;
}
} /// <summary>
/// SoapFormatter反序列化
/// </summary>
/// <param name="str">字符串序列</param>
public T FromSoap<T>(string str)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(str);
SoapFormatter formatter = new SoapFormatter();
using (MemoryStream ms = new MemoryStream())
{
xmlDoc.Save(ms);
ms.Position = ;
return (T)formatter.Deserialize(ms);
}
}
#endregion #region BinaryFormatter序列化
/// <summary>
/// BinaryFormatter序列化
/// </summary>
/// <param name="item">对象</param>
public string ToBinary<T>(T item)
{
BinaryFormatter formatter = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream())
{
formatter.Serialize(ms, item);
ms.Position = ;
byte[] bytes = ms.ToArray();
StringBuilder sb = new StringBuilder();
foreach (byte bt in bytes)
{
sb.Append(string.Format("{0:X2}", bt));
}
return sb.ToString();
}
} /// <summary>
/// BinaryFormatter反序列化
/// </summary>
/// <param name="str">字符串序列</param>
public T FromBinary<T>(string str)
{
int intLen = str.Length / ;
byte[] bytes = new byte[intLen];
for (int i = ; i < intLen; i++)
{
int ibyte = Convert.ToInt32(str.Substring(i * , ), );
bytes[i] = (byte)ibyte;
}
BinaryFormatter formatter = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream(bytes))
{
return (T)formatter.Deserialize(ms);
}
}
#endregion
}
}
[序列化] SerializeHelper--序列化操作帮助类 (转载)的更多相关文章
- [序列化] Serialize--序列化帮助类 (转载)
点击下载 Serialize.zip 这个类是关于加密,解密的操作,文件的一些高级操作1.序列化2.要序列化的类3.序列化例子看下面代码吧 /// <summary> /// 类说明:As ...
- 序列化多表操作、请求与响应、视图组件(子类与拓展类)、继承GenericAPIView类重写接口
今日内容概要 序列化多表操作 请求与相应 视图组件 内容详细 1.序列化多表操作 模型类 models.py中 # 新建django项目 # 创建表 模型类models.py中: from djang ...
- C#工具类:Json操作帮助类(转载)
原文转载自C#工具类:Json操作帮助类_IT技术小趣屋. Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来 ...
- 【转载】C#工具类:Json操作帮助类
Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来简化相应的操作,该工具类中包含以下功能:对象转JSON.数据 ...
- Properties-转换流-打印流-序列化和反序列化-Commons-IO工具类
一.Properties 类(java.util) 概述:Properties 是一个双列集合;Properties 属于map的特殊的孙子类;Properties 类没有泛型,propert ...
- 基于.net core封装的xml序列化,反序列化操作
需求: 由于在.net core中去除了Xml序列化XmlSerializer操作类.因此,在于一此数据传输当中出,需要用到对xml格式字符串的处理问题.因此封装了一个xml序列化与反序列化操作的类库 ...
- IO流总结---- 字节流 ,字符流, 序列化 ,数据操作流,打印流 , Properties 集合
笔记内容: 什么是流 字节流 字符流 序列化 数据操作流(操作基本数据类型的流)DataInputStream 打印流 Properties 集合 什么是流: 流是个抽象的概念,是对输入输出设备的抽象 ...
- java浅克隆和深克隆,序列化和反序列化实现深克隆(封装序列化和反序列化操作)
本篇博客内容: 一.浅克隆(ShallowClone)和深克隆(DeepClone) 二.序列化和反序列化实现深克隆 三.封装序列化和反序列化操作 ObjectOutputStream + 内存流By ...
- 【转载】微软官方提供的Sqlserver数据库操作帮助类SQLHelper类
在.NET平台中,C#语言一般使用ADO.NET组件来操作Sqlserver数据库,通过ADO.NET组件可以实现连接数据库.查询数据集.执行SQL语句以及关闭数据库连接等操作,为此网上有很多开发者自 ...
- 在.net中序列化读写xml方法的总结--转载过来学习学习
原文章地址:http://www.cnblogs.com/fish-li/archive/2013/05/05/3061816.html 首先做个大概的总结,XML包括的元素有XmlElement,X ...
随机推荐
- sql server 清除日志
SQL2008 的收缩日志 由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消: (SQL2005) Backup Log DNNam ...
- 怎样安装Joomla 1.7网站系统
http://jingyan.baidu.com/article/8065f87fc3de112331249830.html 如果你想使用Joomla(地球上最好的内容管理系统之一)搭建一个网站, ...
- ln命令
图形化界面创建ln 命令行界面创建ln 命令行界面创建ln 后续,更新
- 机器学习笔记1——Linear Regression with One Variable
Linear Regression with One Variable Model Representation Recall that in *regression problems*, we ar ...
- Jsp学习(1)
Servlet的用作:用java语言开发动态资源的技术: Jsp的作用:用java语言(+html)开发动态的资源,其实jsp就是servlet演化而来的. Jsp的执行过程: 我们先来做一个实验,首 ...
- Servlet(2)
一.伪代码演示Tomcat的内部代码运行 1).通过映射找到servlet-class的内容,字符串:com.gqx.servlet.FirstServlet 2).通过反射构造构造FirstServ ...
- tar linux 打包 压缩 gzip 命令说明
参数:-c :建立一个压缩档案的参数指令(create 的意思):-x :解开一个压缩档案的参数指令!-t :查看 tarfile 里面的档案! 特别注意,在参数的下达中, c/x/t ...
- HibernateTemplate的find(String querystring)返回值具体解释
项目源代码中出现例如以下代码: HibernateTemplate ht =-- List<Object[]> tempList = ht.find(String querystring) ...
- XML结构文件的读写
附件:http://files.cnblogs.com/xe2011/XML_Writer_And_Read.rar 下面这段代码实现了以下功能 数据保存 textBox1的文本,textBox2的文 ...
- HTML5另类塔防游戏 -《三国战线》公布
关于本作 游戏介绍 本游戏是一款另类塔防游戏.本作以三国这段历史为题材,提供了从颍川之战到官渡之战.官渡之战到夷陵之战.夷陵之战到五丈原之战等15个关卡.在每一个关卡中,你会控制一名三国武将与出现的敌 ...