[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);
        }
    }												
											[WPF]xml序列化以及反序列化数据的更多相关文章
- c# XML序列化与反序列化
		
c# XML序列化与反序列化 原先一直用BinaryFormatter来序列化挺好,可是最近发现在WinCE下是没有办法进行BinaryFormatter操作,很不爽,只能改成了BinaryWrite ...
 - Windows  phone 之XML序列化与反序列化
		
为什么要做序列化和反序列化? 一个回答: 我们都知道对象是不能在网络中直接传输的,不过还有补救的办法.XML(Extensible Markup Language)可扩展标记语言,本身就被设计用来存储 ...
 - C# Note4:XML序列化和反序列化(含加密解密等)
		
前言 在项目中,我们经常用到各种配置文件,比如xml文件.binary文件等等,这里主要根据实践经验介绍下xml文件的序列化和反序列化(毕竟最常用). 实践背景:我要做一个用户管理功能,用户账号信息存 ...
 - C# UTF8的BOM导致XML序列化与反序列化报错:Data at the root level is invalid. Line 1, position 1.
		
最近在写一个xml序列化及反序列化实现时碰到个问题,大致类似下面的代码: class Program { static void Main1(string[] args) { var test = n ...
 - XML 序列化与反序列化
		
XML序列化与反序列化 1.将一个类转化为XML文件 /// <summary> /// 对象序列化成XML文件 /// </summary> /// <param na ...
 - XmlSerializer 对象的Xml序列化和反序列化
		
http://www.cnblogs.com/yukaizhao/archive/2011/07/22/xml-serialization.html 这篇随笔对应的.Net命名空间是System.Xm ...
 - C#的XML序列化及反序列化
		
webservice在工作中用到的很多,基本都是以XML格式问通讯内容,其中最关键的就是XML串的序列化及反序列化. XML的运用中有两种信息传递,一种为XML的请求信息,另一种为返回信息,要运用XM ...
 - .NET XML序列化与反序列化
		
闲着没事,写了两个通用的XML序列化与反序列化的方法. 贴出来当作笔记吧! /// <summary> /// XML序列化 /// </summary> /// <ty ...
 - XmlSerializer 对象的Xml序列化和反序列化,XMLROOT别名设置
		
这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间. 为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中 ...
 - Xml序列化、反序列化帮助类
		
之前从网络上找了一个Xml处理帮助类,并整理了一下,这个帮助类针对Object类型进行序列化和反序列化,而不需要提前定义Xml的结构,把它放在这儿供以后使用 /// <summary> / ...
 
随机推荐
- 面试突击91:MD5 加密安全吗?
			
MD5 是 Message Digest Algorithm 的缩写,译为信息摘要算法,它是 Java 语言中使用很广泛的一种加密算法.MD5 可以将任意字符串,通过不可逆的字符串变换算法,生成一个唯 ...
 - 18.MongDB系列之批量更新写入Python版
			
在实际的工作中,难免批量更新的数量极大,pymongo提供了便捷的客户端供使用 假设读者对pandas比较熟悉,下图为事先准备好的dataframe import pandas as pd from ...
 - 【MySQL】01_运算符、函数
			
运算符 运算符是保留字或主要用于 SQL 语句的 WHERE 子句 中的字符,用于执行操作,例如:比较和算术运算. 这些运算符用于指定 SQL 语句中的条件,并用作语句中多个条件的连词. 常见运算符有 ...
 - 扫雷(哈希+bfs)
			
扫雷 题目描述: 小明最近迷上了一款名为<扫雷>的游戏. 其中有一个关卡的任务如下: 在一个二维平面上放置着 n 个炸雷,第 i 个炸雷 (x\(_i\),y\(_i\),r\(_i\)) ...
 - jmeter分布式压测对master、slave防火墙配置
			
首先要了解jmeter分布式压测的基础概念:master为统计结果的服务器,slave为各台压力机,如下图所示 一.结论 针对master 1.修改jmeter.properties的client.r ...
 - 版本控制工具Git介绍-01
			
使用版本控制工具是为了方便团队开发,比如多人共同维护一个项目的时候,用版本控制工具可以很方便的维护项目代码,如果哪天你改了一个版本,出问题了,我们也可以很快的找到你改了什么,这里介绍使用比较多的版本控 ...
 - 阿里技术专家详解 DDD 系列- Domain Primitive
			
简介: 关于DDD的一系列文章,希望能继续在总结前人的基础上发扬光大DDD的思想,但是通过一套我认为合理的代码结构.框架和约束,来降低DDD的实践门槛,提升代码质量.可测试性.安全性.健壮性. 作者| ...
 - day03-实现02
			
实现02 3.实现任务阶段3-处理Servlet02 3.3Servlet规范设计 3.3.1MyServlet 该类模仿Servlet接口,为了简化,只声明了三个方法:init(),service( ...
 - (工具) 性能测试基准软件 lmBench (待补充)
			
1. lmBench 介绍 Lmbench是一套简易,可移植的,符合ANSI/C标准为UNIX/POSIX而制定的微型测评工具.一般来说,它衡量两个关键特征:反应时间和带宽.Lmbench旨在使系统开 ...
 - Android网络请求(2)
			
Android网络请求(2) 在android网络开发中,除get请求外常见的还有post.put.delete这三种,接下来我们将详细讲解这三种请求及参数 GET请求 我们使用过get请求了,对于我 ...