[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://www.cnblogs.com/lizhenghao126/p/11053590.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450025.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450025.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450025.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

多線程的那點兒事

1. 多線程的那點兒事&#xff08;基礎篇&#xff09; 多線程編程是現代軟件技術中很重要的一個環節。要弄懂多線程&#xff0c;這就要牽涉到多進程&#xff1f;當然&#xff0c;要了解到多進程&#xff0c;就要涉及到操作系統。不過大家也不要緊張&#xff0c;聽我慢慢道來。…

Android應用開發—AsyncTask

摘錄自 Android 多線程—–AsyncTask詳解 AsyncTask AsyncTask&#xff1a;異步任務&#xff0c;從字面上來說&#xff0c;就是在我們的UI主線程運行的時候&#xff0c;異步的完成一些操作。AsyncTask允許我們的執行一個異步的任務在后臺。我們可以將耗時的操作放在異步任務當…

std::shared_ptr之deleter的巧妙應用

本文由作者鄒啟文授權網易云社區發布。std::shared_ptr一次創建&#xff0c;多處共享&#xff0c;通過引用計數控制生命周期。 實例 在郵箱大師PC版中&#xff0c;我們在實現搜索時&#xff0c;大致思路是這樣的&#xff1a; 每一個賬號都有一個SearchFlow&#xff0c;搜索開始…

js - 執行上下文和作用域以及閉包

首先&#xff0c;咱們通常被"執行上下文"&#xff0c;"執行上下文環境"&#xff0c;"上下文環境"&#xff0c;"執行上下文棧"這些名詞搞混。那我們一一來揭秘這些名字的含義。 這一塊一直比較晦澀難懂&#xff0c;還是需要仔細去斟酌斟…

Spring之JDBCTemplate

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一、Spring對不同的持久化支持&#xff1a; Spring為各種支持的持久化技術&#xff0c;都提供了簡單操作的模板和回調 ORM持久化技術模…

從螞蟻金服實踐入手,帶你深入了解 Service Mesh

本文整理自螞蟻金服高級技術專家敖小劍在 QCon 上海 2018 上的演講。我是來自螞蟻金服中間件團隊的敖小劍&#xff0c;目前是螞蟻金服 Service Mesh 項目的 PD。我同時也是 Servicemesher 中國技術社區的創始人&#xff0c;是 Service Mesh 技術在國內最早的布道師。我今天給大…

Android應用開發—FragmentManager如何管理fragments

本文主要摘錄自Android中使用FragmentManager管理fragments 和 淺談FragmentManager與fragment之一二事 先講下自己對fragment的理解&#xff1a; 對于fragment&#xff0c;有太多官方文檔和博文來介紹&#xff0c;此處不做轉述&#xff1a;我感覺android提供fragment這種組件…

數組指針 和 指針數組

最近發現公司有些人說怎樣區分 數組指針 和 指針數組 &#xff1f; 其實 很簡單&#xff1b; 數組指針&#xff0c; 先是&#xff08;定語 &#xff09; &#xff08;主體&#xff09;&#xff0c; &#xff08;定語 數組&#xff09; &#xff08;主體 指針&#xff09…

在云服務器上注意GeoServer和ShadowDataMap的跨域設置

在云服務器上注意GeoServer和ShadowDataMap的跨域設置 1、對于支持cors的網絡資源 可以在ShadowDataMap的devserverconfig.json里設置相應的跨域資源 提示&#xff1a;geoserver發布的地圖服務雖然同在一個服務器上&#xff0c;但是端口不一樣&#xff0c;同樣需要設置跨域 如&…

Guava ImmutableCollection簡介

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 ImmutableCollection代碼定義 GwtCompatible(emulatedtrue) public abstract class ImmutableCollection<E> extends AbstractCo…

Todo List

fragment里面如何處理back按鍵事件。 fragment里面無法Override onBackPressed接口&#xff0c;如何優雅的處理back press事件&#xff1f;activity如何獲取當前活躍的fragment對象。異步網絡請求如何改造成rxjava&#xff0c;rxjava有設置運行線程的能力&#xff0c;異步請求…

常見的幾種負載均衡算法

1、輪詢將所有請求&#xff0c;依次分發到每臺服務器上&#xff0c;適合服務器硬件相同的場景。優點&#xff1a;服務器請求數目相同&#xff1b; 缺點&#xff1a;服務器壓力不一樣&#xff0c;不適合服務器配置不同的情況&#xff1b; 2、隨機請求隨機分配到各臺服務器上。優…

基于 Token 的身份驗證方法

基于 Token 的身份驗證方法 使用基于 Token 的身份驗證方法&#xff0c;在服務端不需要存儲用戶的登錄記錄。大概的流程是這樣的&#xff1a;客戶端使用用戶名跟密碼請求登錄 服務端收到請求&#xff0c;去驗證用戶名與密碼 驗證成功后&#xff0c;服務端會簽發一個 Token&…

Android應用開發-圖片加載庫Glide

Glide Picasso和Glide之間的區別&#xff1a; Picasso 僅僅緩存了全尺寸的圖像&#xff1b;然而 Glide 緩存了原始圖像&#xff0c;全分辨率圖像和另外小版本的圖像。

excel 表格導入 - java 實現

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 import com.alibaba.druid.support.json.JSONUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; imp…

C語言 API

MySQL的C語言API接口 1、首先當然是連接數據庫&#xff0c;函數原型如下&#xff1a; MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned…

線程組之間的JMeter傳遞變量

下面&#xff0c;我們將看看如何在線程組之間共享和傳遞變量。在開發高級JMeter腳本時&#xff0c;很可能您將擁有多個線程組。每個線程組將執行不同的請求。一個很好的例子是我們需要使用Bearer Tokens對用戶進行身份驗證。一個線程組執行身份驗證并保存令牌。另一個線程組需要…

python第九天(9-33)

一&#xff1a;進程 進程概念 進程就是一個程序運行在一個數據集上的一次動態執行過程進程一般由程序&#xff0c;數據集&#xff0c;進程控制塊組成進程控制塊&#xff1a; 進程控制塊用來記錄進程的外部特征&#xff0c;描述進程的執行變化過程&#xff0c;系統可以利用它來控…

Android Studio出現Failed to open zip file. Gradle's dependency cache may be corrupt問題的解決

刪除了/Users/tycao/.gradle/wrapper/dists目錄下對應的gradle-X.X-all目錄重新sync了

雙機熱備份和負載均衡的區別

1、雙機熱備相當于2臺服務器其中有一臺是另一臺的備機&#xff0c;也可以互為備機&#xff1b;而且這兩臺主機的數據時實時同步的&#xff1b;主機在運行服務時&#xff0c;備機處于檢測狀態&#xff0c;主機發生故障后&#xff0c;備機將接管主機的服務。2、負載均衡是在這2臺…