C# 实体类序列化与反序列化二 (DataContractSerializer)
来源:互联网 发布:无标度网络特性 编辑:程序博客网 时间:2024/05/16 05:51
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.Serialization;using System.IO;using System.Xml;namespace Common.Utility.XMLSerialization{ /// <summary> /// DataContractSerializer /// </summary> /// <typeparam name="T"></typeparam> public class DataContractSerializer<T> { /// <summary> /// 实体序列化成xml string /// </summary> /// <param name="meta"></param> /// <returns></returns> public static string ToXMLString(T meta) { DataContractSerializer dcs = new DataContractSerializer(typeof(T)); string xmlStr = string.Empty; using (MemoryStream ms = new MemoryStream()) { try { dcs.WriteObject(ms, meta); xmlStr = Encoding.UTF8.GetString(ms.ToArray()); ms.Close(); } catch { throw; } } return xmlStr; } /// <summary> /// DataContract序列化 /// </summary> /// <param name="value"></param> /// <param name="knownTypes">已知类型的集合</param> /// <returns></returns> public static string ToXMLString(object value, IEnumerable<Type> knownTypes = null) { try { DataContractSerializer dataContractSerializer = new DataContractSerializer(value.GetType(), knownTypes); using (MemoryStream ms = new MemoryStream()) { dataContractSerializer.WriteObject(ms, value); ms.Seek(0, SeekOrigin.Begin); using (StreamReader sr = new StreamReader(ms)) { return sr.ReadToEnd(); } } } catch { throw; } } /// <summary> /// 实体反序列化 /// </summary> /// <param name="xml"></param> /// <returns></returns> public static T ReadFromXML(string xmlStr) { T meta; try { DataContractSerializer dcs = new DataContractSerializer(typeof(T)); using (TextReader reader = new StringReader(xmlStr)) { using (XmlReader xReader = XmlReader.Create(reader)) { meta = (T)dcs.ReadObject(xReader); } } } catch { throw; } return meta; } /// <summary> /// 实体反序列化 /// </summary> /// <param name="xmlStr"></param> /// <param name="knownTypes">IEnumerable<Type></param> /// <returns></returns> public static T ReadFromXML(string xmlStr, IEnumerable<Type> knownTypes = null) { T meta; try { DataContractSerializer dcs = new DataContractSerializer(typeof(T), knownTypes); using (TextReader reader = new StringReader(xmlStr)) { using (XmlReader xReader = XmlReader.Create(reader)) { meta = (T)dcs.ReadObject(xReader); } } } catch { throw; } return meta; } }}
拓展:点击打开链接
0 1
- C# 实体类序列化与反序列化二 (DataContractSerializer)
- C# 实体类序列化与反序列化一 (XmlSerializer)
- WCF 序列化与反序列化复杂类型(DataContractSerializer)
- C# Json 序列化与反序列化二
- C#中使用DataContractSerializer反序列化多级xml
- c# XML和实体类之间相互转换(序列化和反序列化)
- c# XML和实体类之间相互转换(序列化和反序列化)
- c# XML和实体类之间相互转换(序列化和反序列化)
- c# XML和实体类之间相互转换(序列化和反序列化)
- c# XML和实体类之间相互转换(序列化和反序列化)
- c# XML和实体类之间相互转换(序列化和反序列化)
- c# XML和实体类之间相互转换(序列化和反序列化)
- C#实现XML和实体类之间相互转换:序列化和反序列化
- c# XML和实体类之间相互转换(序列化和反序列化)
- c# XML和实体类之间相互转换(序列化和反序列化)
- c# XML和实体类之间相互转换(序列化和反序列化)
- c# XML和实体类之间相互转换(序列化和反序列化)
- C# WCF DataContractSerializer 类
- 关于jmeter中jdbc初步操作的小认识
- 顺序表的基本运算测试
- 避免遮掩继承而来的名称(Effective C++_33)
- C++Primer第五版 5.2节练习
- lintcode-二叉树的前序遍历(非递归)-66
- C# 实体类序列化与反序列化二 (DataContractSerializer)
- 处理美国时间 Tue May 31 17:46:55 +0800 2011
- 大型项目的一些思考
- 正则表达式基本语法
- 单词切分
- maven目录结构
- java学习之正则表达式
- 博客的利弊浅析
- lintcode-二叉树的中序遍历(非递归)-67