C# 之對象與Xml序列化工具類

寫在前面

一個常用的對象與Xml序列化工具類,使用系統類庫System.Xml,序列化時需要注意只能將對象的公共字段和讀/寫屬性轉換為 XML。不轉換方法、索引器、私有字段或只讀屬性。另外XmlSerializer 類無法序列化ArrayList數組和List<T>數組。

using System.Xml.Serialization;

代碼實現

    public class ObjectSerializer<T> where T : class{public void SerializeToXml(string filePath, object target){var dir = Path.GetDirectoryName(Path.GetFullPath(filePath));if (string.IsNullOrWhiteSpace(dir) || !Directory.Exists(dir))throw new Exception("File Path Invalid");using (var writer = new StreamWriter(filePath)){var xmlSerializer = new XmlSerializer(typeof(T));xmlSerializer.Serialize(writer, target);}}public string SerializeToXml(T target){using (var writer = new StringWriter()){var xmlSerializer = new XmlSerializer(typeof(T));xmlSerializer.Serialize(writer, target);return writer.ToString();}}public T DeserializeFromString(string xml){var xmlSerializer = new XmlSerializer(typeof(T));using (StringReader sr = new StringReader(xml)){return xmlSerializer.Deserialize(sr) as T;}}public T DeserializeFromXml(string filePath){if (!File.Exists(filePath))throw new Exception("File Path Invalid");try{using (var reader = new StreamReader(filePath)){var xmlSerializer = new XmlSerializer(typeof(T));return (T)xmlSerializer.Deserialize(reader);}}catch (Exception ex){return null;}}}

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

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

相關文章

3、Qt使用windeploy工具打包可執行文件

新建一個文件夾&#xff0c;把要打包的可執行文件exe拷貝過來 點擊輸入框&#xff0c;復制一下文件夾路徑 點擊電腦左下角&#xff0c;找到Qt文件夾&#xff0c; 點擊打開 “Qt 5.12.0 for Desktop” &#xff08;我安裝的是Qt 5.12.0版本&#xff09; 輸入“cd bin”&#xff…

springsecurity5.7.x和springsecurity6.x配置文件對比

springsecurity5和springsecurity6如何要實現多種登錄方式&#xff0c;自定義登錄方式都是一樣的操作步驟&#xff0c;主要有四個步驟。 一、自定義登錄用戶實體實現springsecurity中的UserDetails接口 二、自定義登錄用戶實現類實現springsecurity中的UserDetailsService接口 …

vivado產生報告閱讀分析20-QOR

Report QoR Suggestions report_qor_suggestions 命令是處理 QoR 建議對象時使用的主要命令。 QoR 建議對象會創建命令和屬性來改善設計的時序性能&#xff08; 欲知詳情 &#xff0c; 請參閱 QoR 建議 &#xff09; 。 report_qor_suggestions 命令可執行兩項任務 &am…

代碼隨想錄-刷題第七天

454. 四數相加II 題目鏈接&#xff1a;454. 四數相加II 思路&#xff1a;哈希法。使用map集合&#xff0c;key存放ab的值&#xff0c;value存放ab出現的次數。使用兩層循環&#xff0c;循環前兩個數組&#xff0c;找出ab&#xff0c;對map賦值。再用兩層循環&#xff0c;遍歷…

唯創知音WT2605C-A001音頻藍牙語音芯片:小巧體積,高品質音頻播放的創新

在現今的科技繁榮時代&#xff0c;音頻技術作為人類感知世界的重要方式&#xff0c;已經變得越來越重要。唯創知音WT2605C-A001音頻藍牙語音芯片&#xff0c;以其卓越的特性和創新性&#xff0c;正在為音頻技術領域帶來一場革命。 首先&#xff0c;這款芯片以其極小的體積—僅…

chatGPT4機器學習數據后最終保留在機器里的是什么? 機器是怎么產生智能的? TensorFlow沒有直接開發出類似GPT-4這樣的模型

機器學習數據后最終保留在機器里的是機器學習模型。機器學習模型是機器學習系統中的核心&#xff0c;它是機器學習系統能夠進行推理和預測的基礎。 機器學習模型通常由參數組成。參數是機器學習模型的權重和偏差。機器學習系統通過訓練來學習這些參數。訓練是指讓機器學習系統…

webpack 打包優化

在vue.config.js中配置 下載 uglifyjs-webpack-plugin 包 const { defineConfig } require("vue/cli-service"); var path require("path");module.exports defineConfig({transpileDependencies: true,filenameHashing: false, // 去除Vue打包后.cs…

0003Java程序設計-ssm基于微信小程序的家教信息管理系統

文章目錄 摘要目 錄系統實現開發環境 編程技術交流、源碼分享、模板分享、網課分享 企鵝&#x1f427;裙&#xff1a;776871563 摘要 本文講述了基于微信小程序的家教信息管理系統的設計與實現。結合線上管理的特點&#xff0c;分析了家教信息管理系統的現狀&#xff0c;給出…

外匯天眼:香港監管機構對AMTD Global Markets Limited啟動法律訴訟

香港證監會&#xff08;SFC&#xff09;已經啟動了法律程序&#xff0c;要求首次審裁法院調查AMTD Global Markets Limited&#xff08;AMTD&#xff0c;目前以orientiert XYZ Securities Limited為名&#xff09;及其前高管在與首次公開發行&#xff08;IPO&#xff09;相關的…

【經典小練習】修改文件中的數據

文章目錄 &#x1f339;例子&#x1f33a;思路&#x1f6f8;方法一?報錯解決 &#x1f6f8;方法二 &#x1f339;例子 文本文件中有下面的數據 2-1-9-4-7-8 將文件中的數據進行排序&#xff0c;變成下面的數據 1-2-4-7-8-9 &#x1f33a;思路 要對這些數據進行排序&#xf…

智慧樓宇可視化視頻綜合管理系統,助力樓宇高效安全運行

隨著互聯網技術的進步和發展&#xff0c;智能化的樓宇建設也逐步成為人們選擇辦公場所是否方便的一個重要衡量因素。在智能化樓宇中&#xff0c;安全管理也是重要的一個模塊。得益于互聯網新興技術的進步&#xff0c;安防視頻監控技術也得到了快速發展并應用在樓宇的安全管理中…

Python武器庫開發-前端篇之html概述(二十八)

前端篇之html概述(二十八) html概述 HTML5是構建Web內容的一種語言描述方式。HTML5是互聯網的下一代標準&#xff0c;是構建以及呈現互聯網內容的一種語言方式&#xff0e;被認為是互聯網的核心技術之一。HTML產生于1990年&#xff0c;1997年HTML4成為互聯網標準&#xff0c;…

虹科Pico汽車示波器 | 汽車免拆檢修 | 2011款瑞麒M1車發動機起動困難、加速無力

一、故障現象 一輛2011款瑞麒M1車&#xff0c;搭載SQR317F發動機&#xff0c;累計行駛里程約為10.4萬km。該車因發動機起動困難、抖動、動力不足、熱機易熄火等故障進廠維修。用故障檢測儀檢測&#xff0c;發動機控制單元&#xff08;ECU&#xff09;中存儲有故障代碼“P0340相…

【Python 訓練營】N_2 打印乘法口訣表

題目 借助格式化輸出長方形、左上三角形、右上三角形、左下三角形、右下三角形5種格式的九九乘法口訣表。 答案 長方形格式 for i in range(1,10):for j in range(1,10):print(%d*%d%2d%(i,j,i*j),end ) # %2d 整數站兩個字節print()左上三角形 for i in range(1,10):for …

Vue框架學習筆記——事件處理

文章目錄 前文提要事件處理的解析過程樣例代碼如下&#xff1a;效果展示圖片&#xff1a;v-on:click"響應函數"v-on:click簡寫形式響應函數添加響應函數傳參占位符"$event"注意事項 前文提要 本人僅做個人學習記錄&#xff0c;如有錯誤&#xff0c;請多包…

2、git進階操作

2、git進階操作 2.1.1 分支的創建 命令參數含義git branch (git checkout -b)<new_branch> <old_branch>表示創建分支-d <-D>刪除分支 –d如果分支沒有合并&#xff0c;git會提醒&#xff0c;-D強制刪除-a -v查看分支-m重新命名分支commit id從指定的commi…

如何打造“面向體驗”的音視頻能力——對話火山引擎王悅

編者按&#xff1a;隨著全行業視頻化的演進&#xff0c;我們置身于一個充滿創新與變革的時代。在這個數字化的浪潮中&#xff0c;視頻已經不再只是傳遞信息的媒介&#xff0c;更是重塑了我們的交互方式和體驗感知。作為字節跳動的“能力溢出”&#xff0c;火山引擎正在飛速奔跑…

【React】路徑別名配置

路徑解析配置&#xff08;webpack&#xff09;&#xff0c;把 / 解析為 src/路徑聯想配置&#xff08;VsCode&#xff09;&#xff0c;VSCode 在輸入 / 時&#xff0c;自動聯想出來對應的 src/下的子級目錄 1. 路徑解析配置 安裝craco npm i -D craco/craco項目根目錄下創建配…

RK3588平臺 USB框架與USB識別流程

一.USB的基本概念 在最初的標準里&#xff0c;USB接頭有4條線&#xff1a;電源&#xff0c;D-,D,地線。我們暫且把這樣的叫做標準的USB接頭吧。后來OTG出現了&#xff0c;又增加了miniUSB接頭。而miniUSB接頭則有5條線&#xff0c;多了一條ID線,用來標識身份用的。 熱插拔&am…

9. Mysql 模糊查詢和正則表達式

一、模糊查詢 1.1 LIKE運算符 在MySQL中&#xff0c;可以使用LIKE運算符進行模糊查詢。LIKE運算符用于匹配字符串模式&#xff0c;其中可以使用通配符來表示任意字符或字符序列。 示例代碼 SELECT * FROM table_name WHERE column_name LIKE pattern;table_name&#xff1a…