[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> / ...
随机推荐
- uoj220【NOI2016】网格
刚了几个小时啊,这tm要是noi我怕不是直接滚粗了.我判答案为1的情况试了几种做法,最后终于想到了一个靠谱的做法,然后细节巨多,调了好久,刚拿到97分时代码有6.2KB了,后来发现有些东西好像没啥用就 ...
- 说说 Redis pipeline
更多技术文章,请关注我的个人博客 www.immaxfang.com 和小公众号 Max的学习札记. Redis 客户端和服务端之间是采用 TCP 协议进行通信的,是基于 Request/Respon ...
- 什么是subsignature和return-type-substitutable
subsignature 什么是签名(signature) 方法签名组成:方法名+参数列表(参数的类型.个数.顺序) Java语言层面规定的签名是不包含返回值类型的: JVM层面规定的签名是包含返回值 ...
- nginx.conf指令注释
nginx.conf指令注释 ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于C ...
- 论文笔记 - An Explanation of In-context Learning as Implicit Bayesian Inference
这位更是重量级.这篇论文对于概率论学的一塌糊涂的我简直是灾难. 由于 prompt 的分布与预训练的分布不匹配(预训练的语料是自然语言,而 prompt 是由人为挑选的几个样本拼接而成,是不自然的自然 ...
- 聊聊消息队列(MQ)那些事
每年的双十一期间,各大电商平台流量暴增,同时,电商平台系统的负载压力也会很大.譬如订单支付的场景,每个订单支付成功后,服务器可能要完成扣减积分.扣减优惠券.扣减商品库存.发短信等一系列操作.单个用户请 ...
- ROSIntegration ROSIntegrationVision与虚幻引擎4(Unreal Engine 4)的配置
ROSIntegration ROSIntegrationVision与虚幻引擎4(Unreal Engine 4)的配置 操作系统:Ubuntu 18.04 虚幻引擎:4.26.2 目录 ROSIn ...
- 在服务器上搭建Jenkins自动化部署工具
在公司发现很多时候都需要手动部署,然后有天听到自动部署这个词想着有没有什么工具能够自动部署项目,最好能自动化部署前后端生成 docker images 运行方便管理.最后经过我各种筛查,发现用 jen ...
- orcl between and 时间
在网上查阅,大家都说between and两边都会包含,但是对于时期来讲,他会包含前者,不会包含后者. 也就是说求一个时间介于上周六到本周五的区间,用between and 需要计算出上周六的时间和本 ...
- ArcGIS 通过字段计算 设置顺序编码
地块编号="前缀" & left("0000",4-len( [FID]+1)) & ([FID] +1)