代码

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序列化以及反序列化数据的更多相关文章

  1. c# XML序列化与反序列化

    c# XML序列化与反序列化 原先一直用BinaryFormatter来序列化挺好,可是最近发现在WinCE下是没有办法进行BinaryFormatter操作,很不爽,只能改成了BinaryWrite ...

  2. Windows phone 之XML序列化与反序列化

    为什么要做序列化和反序列化? 一个回答: 我们都知道对象是不能在网络中直接传输的,不过还有补救的办法.XML(Extensible Markup Language)可扩展标记语言,本身就被设计用来存储 ...

  3. C# Note4:XML序列化和反序列化(含加密解密等)

    前言 在项目中,我们经常用到各种配置文件,比如xml文件.binary文件等等,这里主要根据实践经验介绍下xml文件的序列化和反序列化(毕竟最常用). 实践背景:我要做一个用户管理功能,用户账号信息存 ...

  4. 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 ...

  5. XML 序列化与反序列化

    XML序列化与反序列化 1.将一个类转化为XML文件 /// <summary> /// 对象序列化成XML文件 /// </summary> /// <param na ...

  6. XmlSerializer 对象的Xml序列化和反序列化

    http://www.cnblogs.com/yukaizhao/archive/2011/07/22/xml-serialization.html 这篇随笔对应的.Net命名空间是System.Xm ...

  7. C#的XML序列化及反序列化

    webservice在工作中用到的很多,基本都是以XML格式问通讯内容,其中最关键的就是XML串的序列化及反序列化. XML的运用中有两种信息传递,一种为XML的请求信息,另一种为返回信息,要运用XM ...

  8. .NET XML序列化与反序列化

    闲着没事,写了两个通用的XML序列化与反序列化的方法. 贴出来当作笔记吧! /// <summary> /// XML序列化 /// </summary> /// <ty ...

  9. XmlSerializer 对象的Xml序列化和反序列化,XMLROOT别名设置

    这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间.   为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中 ...

  10. Xml序列化、反序列化帮助类

    之前从网络上找了一个Xml处理帮助类,并整理了一下,这个帮助类针对Object类型进行序列化和反序列化,而不需要提前定义Xml的结构,把它放在这儿供以后使用 /// <summary> / ...

随机推荐

  1. 『现学现忘』Git基础 — 36、标签tag(一)

    目录 1.标签介绍 2.列出标签 3.创建标签 (1)标签的分类 (2)附注标签 (3)轻量标签 4.后期打标签 1.标签介绍 软件的某个发行版本所对应的,其实就是软件开发过程中,某一个阶段的最后一次 ...

  2. token字段,请务加在请求地址的头部header

    如下图所示,你必须在请求的头部加上 token参数,主要原因有两个.第一点,这个是登录标志,因为接口访问用不了cookie,所以只能通过这个header请求标志判断用户是否已经登录.第二点,系统有时候 ...

  3. 13.内建函数eval()

      eval函数 eval()函数十分强大 -- 将字符串当成有效的表达式来求值并返回计算结果 例如下图,eval会将字符串的引号去掉并且计算返回结果  

  4. Java安全之反序列化(1)

    序列化与反序列化 概述 Java序列化是指把Java对象转换为字节序列的过程:这串字符可能被储存/发送到任何需要的位置,在适当的时候,再将它转回原本的 Java 对象,而Java反序列化是指把字节序列 ...

  5. Vue3组件间传值

    12种方式 1. 父组件 ./father.vue 点击查看代码 <template> <h1>father:</h1> <h3>子组件传过来的:{{ ...

  6. 链接脚本(Linker Scripts)语法和规则解析(自官方手册)

    为了便于与英文原文对照学习与理解(部分翻译可能不准确),本文中的每个子章节标题和引用使用的都是官方手册英文原称.命令及命令行选项统一使用斜体书写.高频小节会用蓝色字体标出. 3 Linker Scri ...

  7. phpexcel 小技巧

    //设置填充的样式和背景色$objPHPExcel->getActiveSheet()->getStyle( 'A1:AU1')->getFill()->setFillType ...

  8. element-ui 对话框dialog里使用echarts,报错'dom没有获取到'?

    给el-dialog添加@open="open()" 在刚进入页面的时候对话框是关闭的,echarts不进行获取dom,当点击对话框出来的时候,有个opened事件,在这个事件里边 ...

  9. win 10 玩红警/黑边,不能全屏,闪退

    win 10玩红警黑边问题 1.下载ddraw.dll,放在游戏目录 下载链接:ddraw.dll 如果提示 选择保留就行了 2.Win 键+S键,搜索注册表,打开这个 进去按这个路径    计算机\ ...

  10. 更改grub2背景图片

    在/etc/grub/default这里面修改东西然后update-grub来间接修改/boot/grub/grub.cfg中的内容 1.将png图片放进/boot/grub/目录下 2.update ...