XmlSerialize

以前配置文件都直接写在TXT文件,能看懂就行;

后来写了点代码,就把配置写在ini文件里;

再后来随着趋势就把配置类序列化到本地,即xml配置;

现在懒了,直接ToJson到本地,需要时FromJson。

===== 2017.7.1===== 下面纪念下xml序列化

using System.IO;
using System.Xml.Serialization;

namespace Downloader
{
    public static class SerializeCfg
    {
        public static T DeserializeConfig<T>(this string path)
        {
            T result;
            using (FileStream fs = File.OpenRead(path))
            {
                //读取文件
                int nLength = (int)fs.Length;
                byte[] byteArray = new byte[nLength];
                fs.Read(byteArray, 0, nLength);

                using (MemoryStream stream = new MemoryStream(byteArray))
                {
                    //返序列化
                    XmlSerializer reader = new XmlSerializer(typeof (T));
                    result = (T) reader.Deserialize(stream);
                }
            }
            return result;
        }

        /// <summary>
        /// 序列化服务到持久设备
        /// </summary>
        public static void SerializeConfig<T>(this T obj, string path)
        {
            //序列化到内存
            XmlSerializer writer = new XmlSerializer(typeof(T));
            using (MemoryStream ms = new MemoryStream())
            {
                writer.Serialize(ms, obj);

                byte[] byteArray = ms.ToArray();

                //保存数据到文件
                using (FileStream fs = File.Create(path))
                {
                    fs.Write(byteArray, 0, byteArray.Length);
                }
            }

        }
    }
}
时间: 2024-10-20 14:51:04

XmlSerialize的相关文章

C#中XML与对象之间的序列化、反序列化

using System; using System.IO; using System.Text; using System.Xml; using System.Xml.Serialization; namespace Xml.Utility { public static class XmlUtil { /// <summary> /// 将一个对象序列化为XML字符串 /// </summary> /// <param name="o">要序列化

序列化和反序列化代码

1.UserInfo对象类 [Serializable] public class UserInfo { public string Name { get; set; } public int Age { get; set; } } 2.Xml方式序列化和反序列化 public class XmlSerialization { public static void XmlSerialize(UserInfo user) { XmlSerializer serializer = new XmlSe

在.net中序列化读写xml方法的总结

在.net中序列化读写xml方法的总结 阅读目录 开始 最简单的使用XML的方法 类型定义与XML结构的映射 使用 XmlElement 使用 XmlAttribute 使用 InnerText 重命名节点名称 列表和数组的序列化 列表和数组的做为数据成员的序列化 类型继承与反序列化 反序列化的实战演练 反序列化的使用总结 排除不需要序列化的成员 强制指定成员的序列化顺序 自定义序列化行为 序列化去掉XML命名空间及声明头 XML的使用建议 XML是一种很常见的数据保存方式,我经常用它来保存一些

XML操作类

public static class XmlHelper {/// <summary> /// 将一个对象序列化为XML字符串 /// </summary> /// <param name="o">要序列化的对象</param> /// <param name="encoding">编码方式</param> /// <returns>序列化产生的XML字符串</returns

物联网框架ServerSuperIO

1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架ServerSuperIO教程>2.服务实例的配置参数说明 <连载 | 物联网框架ServerSuperIO教程>- 3.设备驱动介绍 <连载 | 物联网框架ServerSuperIO教程>-4.如开发一套设备驱动,同时支持串口和网络通讯. <连载 | 物联网框架ServerSupe

net中序列化读写xml

参考http://www.cnblogs.com/fish-li/archive/2013/05/05/3061816.html 我们可以直接使用XmlTextReader.XmlDocument.XPath来取数XML中的数据, 也可以使用LINQ TO XML或者反序列化的方法从XML中读写数据,我各人比较喜欢序列化.反序列化方法. 1.默认情况下,不添加任何属性标签的对象属性都序列化为一个节点.如下一个Student对象序列化结果如下: public class Student { pub

Xml序列化和反序列化

读取Xml总共有三种方法:XmlTextReader   XmlDoucument   XPath 今天总结下XmlSerialize,xmlSerialize提供两个方法Deserialize(将xml反序列化成对象)和Serialize(将对象序列化城xml)   一.Serialize   序列化 /// <summary> /// transform target object in to xml file /// </summary> /// <typeparam

近期开发项目中用到的编码小技巧汇总说明

1.默认EF生成的连接字符串比较的长和怪异,若想使用普通的连接字符串来连接EF,则可以通过创建分部类,并重写一个构造函数,在构造函数中通过动态拼接EntityConnectionString得到EF所需的连接字符串,具代实现代码如下: public partial class DataEntities { private static ConcurrentDictionary<string, string> entityConnStrings = new ConcurrentDictionar

XMLHelper 辅助类

public class XmlHelper { public XmlHelper() { } public enum XmlType { File, String }; /// <summary> /// 创建XML文档 /// </summary> /// <param name="name">根节点名称</param> /// <param name="type">根节点的一个属性值</para