对象,对象集合的简单Xml序列化与反序列化
来源:互联网 发布:网络主播新闻稿 编辑:程序博客网 时间:2024/06/11 17:03
对象,对象集合的简单Xml序列化与反序列化
本文描述如何使用CLR中的StringWriter,XmlSerializer将对象, 对象集合序列化为Xml格式的字符串, 同时描述如何进行反序列化.
C#版本: C# 3.0
开发环境: VS 2008
主要方法:
定义一个用于测试的实体类: UserInfo
编写测试子程序:
C#版本: C# 3.0
开发环境: VS 2008
主要方法:
复制 保存
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;using System.Xml;using System.Xml.Serialization;namespace ConsoleApplication2{ public class SimpleSerializer { /// <summary> /// 序列化对象 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="t">对象</param> /// <returns></returns> public static string Serialize<T>(T t) { using (StringWriter sw = new StringWriter()) { XmlSerializer xz = new XmlSerializer(t.GetType()); xz.Serialize(sw, t); return sw.ToString(); } } /// <summary> /// 反序列化为对象 /// </summary> /// <param name="type">对象类型</param> /// <param name="s">对象序列化后的Xml字符串</param> /// <returns></returns> public static object Deserialize(Type type, string s) { using (StringReader sr = new StringReader(s)) { XmlSerializer xz = new XmlSerializer(type); return xz.Deserialize(sr); } } }}
定义一个用于测试的实体类: UserInfo
复制 保存
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xml.Serialization;namespace ConsoleApplication2{ [Serializable] public class UserInfo { private int m_UserId; [XmlElement("userId")] public int UserId { get { return m_UserId; } set { m_UserId = value; } } private string m_UserName; [XmlElement("userName")] public string UserName { get { return m_UserName; } set { m_UserName = value; } } }}
编写测试子程序:
复制 保存
using System;using System.Collections.Generic;namespace ConsoleApplication2{ class Program { static void Main(string[] args) { Program.TestOne(); Console.WriteLine(string.Empty); Program.TestTwo(); Console.WriteLine(string.Empty); Program.TestThree(); Console.WriteLine(string.Empty); Program.TestFour(); } public static void TestOne() { UserInfo info = new UserInfo() { UserId = 1, UserName = "Guozhijian" }; Console.WriteLine(SimpleSerializer.Serialize<UserInfo>(info)); } public static void TestTwo() { List<UserInfo> list = new List<UserInfo>(); list.Add(new UserInfo() { UserId = 1, UserName = "Guozhijian" }); list.Add(new UserInfo() { UserId = 2, UserName = "Zhenglanzhen" }); Console.WriteLine(SimpleSerializer.Serialize<List<UserInfo>>(list)); } public static void TestThree() { string s = SimpleSerializer.Serialize<UserInfo>(new UserInfo() { UserId = 1, UserName = "Guozhijian" }); UserInfo info = SimpleSerializer.Deserialize(typeof(UserInfo), s) as UserInfo; Console.WriteLine(info.UserId.ToString() + ", " + info.UserName); } public static void TestFour() { List<UserInfo> list = new List<UserInfo>(); list.Add(new UserInfo() { UserId = 1, UserName = "Guozhijian" }); list.Add(new UserInfo() { UserId = 2, UserName = "Zhenglanzhen" }); string s = SimpleSerializer.Serialize<List<UserInfo>>(list); List<UserInfo> newList = SimpleSerializer.Deserialize(typeof(List<UserInfo>), s) as List<UserInfo>; foreach (var info in newList) { Console.WriteLine(info.UserId.ToString() + ", " + info.UserName); } } }}
- 对象,对象集合的简单Xml序列化与反序列化
- 对象,对象集合的简单Xml序列化与反序列化 【实用代码,含泛型方法】
- 对象,对象集合的简单Xml序列化与反序列化(非原创)
- C#中对象,对象集合的简单Xml序列化与反序列化(已测试)
- C#对象的 Xml序列化与反序列化
- Xml与对象之间的序列化、反序列化
- 对象与XML,序列化与反序列化
- 对象序列化反序列化为xml
- xml类对象序列化与反序列化
- XStream 通过对象流进行对象与xml的序列化和反序列化
- .NET对象的XML序列化和反序列化
- .NET对象的XML序列化和反序列化
- .NET对象的XML序列化和反序列化
- .NET对象的XML序列化和反序列化
- C# 对象的xml序列化和反序列化
- 对象的Xml序列化和反序列化
- 对象的xml序列化、反序列化
- XmlSerializer 对象的Xml序列化和反序列化
- Python中的一个文件句柄问题
- DB2 与 Ruby on Rails: DB2 与 Ruby on Rails 入门
- 主成份分析与因子分析
- 页面存储信息
- Progress 数据库JDBC连接配置
- 对象,对象集合的简单Xml序列化与反序列化
- compiz fusion 的快捷键
- 线路独立坐标系的建立方法研1
- 每个java初学者都应该搞懂的问题!
- TL_WN321G无线网卡的移植
- 线路独立坐标系的建立方法研2
- ASP。NET基础记录
- 干煸四季豆——似乎这个更正宗zz
- JSP前台的hidden域传值和action的处理