整個(gè)文檔目錄如下:
目錄
1介紹... 1
2 為什么使用YAXLib. 2
3 YAXLib使用指南... 2
3.1 基本的使用和格式化... 2
3.2 序列化集合類(lèi)的對(duì)象... 5
3.3 序列化字典類(lèi)... 8
3.4 序列化嵌套的對(duì)象... 13
3.5 添加xml注釋... 17
4 反序列化和錯(cuò)誤處理機(jī)制... 18
5 選擇進(jìn)行序列化的域... 21
6 定義枚舉成員的別名... 22
7 序列化多維數(shù)組... 24
8 通過(guò)基類(lèi)或接口引用來(lái)序列化對(duì)象... 25
9 保留空引用標(biāo)識(shí)... 27
10 格式化數(shù)據(jù)項(xiàng)... 28
11 多級(jí)反序列化... 31
12 沒(méi)有默認(rèn)構(gòu)造函數(shù)的類(lèi)的問(wèn)題... 31
13 有自引用類(lèi)的問(wèn)題... 32
14 YAXLib特性... 32
15 YAXLib異常類(lèi)... 33
16 什么時(shí)候不要使用YAXLib. 34
17 許可... 34
1 介紹
在本文中,會(huì)把要提到的XML序列化庫(kù)叫做YAXLib,我們知道。.Net 還是提供了一些序列化功能的,尤其是XmlSerializer,該類(lèi)被程序員廣泛使用用來(lái)序列化對(duì)象成XML,當(dāng)然,反序列化也是可以的。我認(rèn)為XmlSerializer類(lèi)的問(wèn)題有幾下幾點(diǎn)
程序員不能自由的選擇生成的xml的結(jié)構(gòu)
不支持序列化一些集合類(lèi),比如Dictionary<,> 或者IEnumerable<>的屬性
當(dāng)反序列化的時(shí)候,如果缺失了一些域,則反序列化失敗,這就使得用來(lái)存儲(chǔ)一ixekeyi被用戶(hù)編輯的配置文件變得不合適了。
2 為什么使用YAXLib
YAXLib解決上述問(wèn)題的特點(diǎn)
程序員可以決定xml文件的結(jié)構(gòu),一個(gè)屬性可以是一個(gè)子元素,或者是其他屬性的屬性,或者是一個(gè)在類(lèi)中沒(méi)有對(duì)應(yīng)屬性的元素。
集合類(lèi)也可以被序列化成一個(gè)逗號(hào)分隔(也可以是其他任何分隔符)的數(shù)據(jù)項(xiàng)列表,而且。為Dictionary<,>對(duì)象實(shí)現(xiàn)了一些特殊的格式化功能,這樣,使得程序員可以完全控制生成的xml文件的結(jié)構(gòu)
他支持System.Collections.Generic 命名空間中的所有泛型集合類(lèi)(像Dictionary, HashSet, LinkedList, List, Queue,SortedDictionary, SortedList, 和 Stack) 和在System.Collections 命名空間中的非泛型集合類(lèi)( ArrayList, BitArray, Hashtable, Queue, SortedList, 和 Stack)非泛型集合類(lèi)可以包含多種不同的對(duì)象,而且,庫(kù)還支持序列化和反序列化一維,多維,不規(guī)則的數(shù)組。
支持通過(guò)對(duì)基類(lèi)/接口的引用,實(shí)現(xiàn)對(duì)一些對(duì)象集合的序列化和反序列化。
支持多級(jí)反序列化
程序員可以為生成的xml提供注釋
當(dāng)進(jìn)行反序列化的時(shí)候,程序員可以選擇性對(duì)于那些與類(lèi)的屬性相關(guān),但沒(méi)有出現(xiàn)在xml文件中的數(shù)據(jù)應(yīng)該如何處理。這種情況下可以看錯(cuò)是一個(gè)錯(cuò)誤,然后類(lèi)庫(kù)拋出一些異常,或者記錄錯(cuò)誤,或者可以被看成一個(gè)警告,然后用程序員預(yù)定義的值賦給對(duì)應(yīng)的屬性,而且,程序可以可以選擇忽略這個(gè)問(wèn)題,相關(guān)的異常將既不拋出也不作任何記錄。請(qǐng)查看保留空引用標(biāo)識(shí)那一節(jié) 看看什么時(shí)候可以忽略孤立的數(shù)據(jù)也許對(duì)你有幫助
程序員可以自己選擇錯(cuò)誤處理規(guī)則,對(duì)于數(shù)據(jù)敏感的應(yīng)用程序,程序員可以選擇在任何異常的情況下,庫(kù)都應(yīng)該拋出并且記錄異常,對(duì)于其他的一些情況(比如要求不那么高的配置文件的存儲(chǔ)),程序員可以選擇把異常僅僅看成一個(gè)警告,僅僅記錄一下,讓程序的其他部分繼續(xù)運(yùn)行。