XML序列化的实用类
来源:互联网 发布:兄弟连linux ppt下载 编辑:程序博客网 时间:2024/05/14 16:41
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xml.Serialization;using System.IO;using System.Xml;// 此处代码来源于博客【在.net中读写config文件的各种方法】的示例代码// http://www.cnblogs.com/fish-li/archive/2011/12/18/2292037.htmlnamespace MyMVC{ public static class XmlHelper { private static void XmlSerializeInternal(Stream stream, object o, Encoding encoding) { if( o == null ) throw new ArgumentNullException("o"); if( encoding == null ) throw new ArgumentNullException("encoding"); XmlSerializer serializer = new XmlSerializer(o.GetType()); XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.NewLineChars = "\r\n"; settings.Encoding = encoding; settings.IndentChars = " "; using( XmlWriter writer = XmlWriter.Create(stream, settings) ) { serializer.Serialize(writer, o); writer.Close(); } } /// <summary> /// 将一个对象序列化为XML字符串 /// </summary> /// <param name="o">要序列化的对象</param> /// <param name="encoding">编码方式</param> /// <returns>序列化产生的XML字符串</returns> public static string XmlSerialize(object o, Encoding encoding) { using( MemoryStream stream = new MemoryStream() ) { XmlSerializeInternal(stream, o, encoding); stream.Position = 0; using( StreamReader reader = new StreamReader(stream, encoding) ) { return reader.ReadToEnd(); } } } /// <summary> /// 将一个对象按XML序列化的方式写入到一个文件 /// </summary> /// <param name="o">要序列化的对象</param> /// <param name="path">保存文件路径</param> /// <param name="encoding">编码方式</param> public static void XmlSerializeToFile(object o, string path, Encoding encoding) { if( string.IsNullOrEmpty(path) ) throw new ArgumentNullException("path"); using( FileStream file = new FileStream(path, FileMode.Create, FileAccess.Write) ) { XmlSerializeInternal(file, o, encoding); } } /// <summary> /// 从XML字符串中反序列化对象 /// </summary> /// <typeparam name="T">结果对象类型</typeparam> /// <param name="s">包含对象的XML字符串</param> /// <param name="encoding">编码方式</param> /// <returns>反序列化得到的对象</returns> public static T XmlDeserialize<T>(string s, Encoding encoding) { if( string.IsNullOrEmpty(s) ) throw new ArgumentNullException("s"); if( encoding == null ) throw new ArgumentNullException("encoding"); XmlSerializer mySerializer = new XmlSerializer(typeof(T)); using( MemoryStream ms = new MemoryStream(encoding.GetBytes(s)) ) { using( StreamReader sr = new StreamReader(ms, encoding) ) { return (T)mySerializer.Deserialize(sr); } } } /// <summary> /// 读入一个文件,并按XML的方式反序列化对象。 /// </summary> /// <typeparam name="T">结果对象类型</typeparam> /// <param name="path">文件路径</param> /// <param name="encoding">编码方式</param> /// <returns>反序列化得到的对象</returns> public static T XmlDeserializeFromFile<T>(string path, Encoding encoding) { if( string.IsNullOrEmpty(path) ) throw new ArgumentNullException("path"); if( encoding == null ) throw new ArgumentNullException("encoding"); string xml = File.ReadAllText(path, encoding); return XmlDeserialize<T>(xml, encoding); } }}
0 0
- XML序列化的实用类
- 对象,对象集合的简单Xml序列化与反序列化 【实用代码,含泛型方法】
- XML的序列化
- XML Web 服务的 XML 序列化
- XML序列化的实例
- Xml序列化的注意事项
- xml文件的序列化
- xml文件的序列化
- xml文件的序列化
- 安卓中xml的序列化
- 介绍.NET XML序列化,构建XML序列化的框架类
- 简单实用的Xml解析类
- 简单实用的xml解析类-----------CMarkUP
- XML序列化类(xmlFrame)
- xml 序列化 实体类
- C# xml序列化类
- c#XML文件操作类 实用的XML操作
- C# 序列化反序列化XML的帮助类
- Fragment的概念与使用(一)--基本概念
- Turbo C 3.0安装及使用说明
- angular input输入框中使用filter格式化日期
- How to beat the CAP theorem--笔记
- Fragment的概念与使用(二)--构建灵活的Android应用UI
- XML序列化的实用类
- Future 模式
- 设计模式六大原则
- golang(3)
- uva 11044(数学)
- 【九度】题目1001:A+B for Matrices
- 从零实现MVC框架之总结(9)
- 多级企业数据容灾解决方案对比
- 只需一步,让你马上变天才??????????????????????????????????????