c# xml序列化和反序列化
来源:互联网 发布:当当网的价值网络 编辑:程序博客网 时间:2024/05/20 14:25
1.首先解释一下名次含义:
序列化将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
反序列化与之相反将可存储或可传输的形式转换为对象的状态信息。这里不再多说
直接上代码:
using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Xml.Serialization;namespace NewXml{ /// <summary> /// Xml序列化与反序列化 /// </summary> public class XmlUtil { #region 反序列化 /// <summary> /// Xml反序列化成T /// </summary> /// <param name="type">类型</param> /// <param name="xml">XML字符串</param> /// <returns></returns> public static T XmlDeserialize<T>(string xml) where T:class,new() { try { using (StringReader sr = new StringReader(xml)) { XmlSerializer xmldes = new XmlSerializer(typeof(T)); return xmldes.Deserialize(sr) as T; } } catch (Exception) { return default(T); } } /// <summary> /// Xml Stream反序列化成T /// </summary> /// <param name="type"></param> /// <param name="xml"></param> /// <returns></returns> public static T XmlDeserialize<T>(Stream stream) where T:class,new() { try { XmlSerializer xmldes = new XmlSerializer(typeof(T)); return xmldes.Deserialize(stream) as T; } catch { return default(T); } } #endregion #region 序列化 /// <summary> /// object序列化成Xml字符串 /// </summary> /// <param name="type">类型</param> /// <param name="obj">对象</param> /// <returns></returns> public static string XmlSerializer(object t) { MemoryStream Stream = new MemoryStream(); XmlSerializer xml = new XmlSerializer(t.GetType()); try { //序列化对象 xml.Serialize(Stream, t); } catch (InvalidOperationException) { throw; } Stream.Position = 0; StreamReader sr = new StreamReader(Stream); string str = sr.ReadToEnd(); sr.Dispose(); Stream.Dispose(); return str; } #endregion }}
2.使用方法:
List<Student> stu1 = new List<Student> { new Student{Name = "okbase", Age = 10}, new Student{Name = "张三", Age = 15}, new Student{Name = "李四", Age = 20}, }; string xml = XmlUtil.XmlSerializer(stu1); Console.WriteLine(xml); stu1 = XmlUtil.XmlDeserialize<List<Student>>(xml); foreach (var stu in stu1) { Console.WriteLine(stu.Name); }
普通对象,集合,datatable等均可以使用进行序列化,反序列化。
DataTable序列化:
DataTable dt = new DataTable("mytable"); // 必须指明DataTable名称 dt.Columns.Add("Dosage", typeof(int)); dt.Columns.Add("Drug", typeof(string)); dt.Columns.Add("Patient", typeof(string)); dt.Columns.Add("Date", typeof(DateTime)); // 添加行 dt.Rows.Add(25, "Indocin", "David", DateTime.Now); dt.Rows.Add(50, "Enebrel", "Sam", DateTime.Now); dt.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now); dt.Rows.Add(21, "Combivent", "Janet", DateTime.Now); dt.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now); // 序列化 string xml = XmlUtil.XmlSerializer(dt); Console.Write(xml);
0 0
- C#中XML序列化和反序列化初探
- C# 对象的xml序列化和反序列化
- C# XML 的序列化和反序列化
- C# 二进制、Xml、Json序列化和反序列化
- c# xml序列化和反序列化
- C# XML序列化和反序列化
- C#的序列化和反序列化 TEST -XML
- C# XML序列化和反序列化
- C# 中XML的序列化和反序列化
- XML序列化和反序列化
- XML序列化和反序列化
- Xml序列化和反序列化
- XML序列化和反序列化
- xml序列化和反序列化
- XML序列化和反序列化
- XML序列化和反序列化
- Xml序列化和反序列化
- c# 序列化和反序列化
- [BZOJ 1001] 狼抓兔子
- java slf4j的用法
- 周记——20150907
- ubuntu 12.04 tomcat + jsp的入门
- Meteor全栈开发平台 - 不仅仅是前端
- c# xml序列化和反序列化
- resin的部署安装
- 在Debian 8纯命令行安装android开发环境方法
- LeetCode || Permutations
- Light oj 1025 (区间dp)
- 解决:Jersey搭建webService报错:com.sun.jersey.spi.inject.Errors$ErrorMessagesException
- Ps中 不透明度和填充的区别
- Scala总结
- Effective C++——条款29(第5章)