• [WPF]xml序列化以及反序列化数据


    代码

    XML序列化工具类 

     public static class XMLHelper
        {
            /// <summary>
            /// 将对象序列化为指定的文件名
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="obj"></param>
            /// <param name="fileName"></param>
            /// <returns></returns>
            public static bool SaveObjAsXml<T>(T obj,string fileName)
            {
    
                var dir = Application.StartupPath;
                try
                {
                    FileStream fs = new FileStream(dir+"/"+fileName, FileMode.Create);
                    XmlSerializer xs = new XmlSerializer(typeof(T));
                    xs.Serialize(fs, obj);
                    fs.Close();
                    return true;
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    throw;
                }
            }
    
            /// <summary>
            /// 将xml文件进行反序列化
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="fileName"></param>
            /// <returns></returns>
            public static T DecodeXML<T>(string fileName)
            {
                var dir = Application.StartupPath;
                fileName = dir + "/" + fileName;
                try
                {
                    if (File.Exists(fileName)==false)
                        return default(T);
                    FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
                    XmlSerializer xs = new XmlSerializer(typeof(T));
                    T obj = (T)xs.Deserialize(fs);
                    return obj;
                }catch(Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    throw;
                }
                
            }
        }

     对应的窗体数据类可以定义为:

    [XmlRoot]
        public class WindowsData:PropertyChangedBase
        {
            [XmlElement("WindowsIndex")]
            /// <summary>
            /// Windows窗体索引
            /// </summary>
            public int WindowsIndex{get;set; }
    
            [XmlElement("FontSize")]
            private double fontSize=14;
            /// <summary>
            /// 窗体字体
            /// </summary>
            public double FontSize
            {
                get { return fontSize;}
                set
                {
                    fontSize=value;
                    OnPropertyChanged("FontSize");
                }
            }
    
    
            private Point startUpPosition;
            [XmlElement("LeftTopWinPosition")]
            public Point StartUpPosition
            {
                get { return startUpPosition; }
                set
                {
                    startUpPosition = value;
                   
                    OnPropertyChanged("StartUpPosition");
                }
            }
            
    
            /// <summary>
            /// 窗体宽度
            /// </summary>
            private int windowsWidth;
            public int WindowsWidth
            {
                get { return windowsWidth; }
                set { windowsWidth = value;OnPropertyChanged("WindowsWidth"); }
            }
    
            private int windowsHeight;
            public int WindowsHeight
            {
                get { return windowsHeight; }
                set
                {
                    windowsHeight = value;
                    OnPropertyChanged("WindowsHeight");
                }
            }
    
    
            private string richTextBoxContent;
    
            [XmlElement("UserInputNotes")]
            public string RichTextBoxContent
            {
                get { return richTextBoxContent; }
                set
                {
                    richTextBoxContent = value;
                    OnPropertyChanged("RichTextBoxContent");
                }
            }
            public WindowsData()
            {
    //            MessageBox.Show("新的窗体数据加载了");
                WindowsIndex = GenerateWindowsIndex.Generate();
                WindowsWidth = 350;
                WindowsHeight = 450;
                double screenHeight = SystemParameters.FullPrimaryScreenHeight;
                double screenWidth = SystemParameters.FullPrimaryScreenWidth;
                StartUpPosition =new Point((screenWidth - WindowsWidth)/2,(screenHeight - WindowsHeight)/2);
            }
        }
    https://github.com/li-zheng-hao
  • 相关阅读:
    maven使用
    Java生成XML
    Raphael使用
    pybombs 安装
    Archlinux 踩坑实录
    Office2016 转换零售版为VOL版
    神奇的linux发行版 tiny core linux
    Cubietruck查看CPU及硬盘温度
    在Cubieboard上关闭irqbalance服务避免内存泄漏
    cubieboard中使用py-kms与dnsmasq搭建局域网内全自动KMS激活环境
  • 原文地址:https://www.cnblogs.com/lizhenghao126/p/11053590.html
Copyright © 2020-2023  润新知