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