今天早上翻譯了Yet-Another-XML-Serialization-Library-for-the-NET,將近4個小時把30頁的文檔翻譯完了。因為文章很長。重新排版壓力太大。。我把翻譯好的做成了pdf,所以本文只列出前兩部分。如果不符合規則。請管理員撤下。
文檔下載:XML序列化神器
整個文檔目錄如下:
目錄
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 序列化多維陣列... 24
8 通過基類或介面引用來序列化對象... 25
9 保留Null 參考標識... 27
10 格式化資料項目... 28
11 多級還原序列化... 31
12 沒有預設建構函式的類的問題... 31
13 有自引用類的問題... 32
14 YAXLib特性... 32
15 YAXLib異常類... 33
16 什麼時候不要使用YAXLib. 34
17 許可... 34
1 介紹
在本文中,會把要提到的XML序列化庫叫做YAXLib,我們知道。.Net 還是提供了一些序列化功能的,尤其是XmlSerializer,該類被程式員廣泛使用用來序列化對象成XML,當然,還原序列化也是可以的。我認為XmlSerializer類的問題有幾下幾點
- 程式員不能自由的選擇產生的xml的結構
- 不支援序列化一些集合類,比如Dictionary<,> 或者IEnumerable<>的屬性
- 當還原序列化的時候,如果缺失了一些域,則還原序列化失敗,這就使得用來儲存一ixekeyi被使用者編輯的設定檔變得不合適了。
2 為什麼使用YAXLib
YAXLib解決上述問題的特點
- 程式員可以決定xml檔案的結構,一個屬性可以是一個子項目,或者是其他屬性的屬性,或者是一個在類中沒有對應屬性的元素。
- 集合類也可以被序列化成一個逗號分隔(也可以是其他任何分隔字元)的資料項目列表,而且。為Dictionary<,>對象實現了一些特殊的格式化功能,這樣,使得程式員可以完全控制產生的xml檔案的結構
- 他支援System.Collections.Generic 命名空間中的所有泛型集合類(像
Dictionary, HashSet, LinkedList, List, Queue,SortedDictionary, SortedList, 和 Stack) 和在System.Collections 命名空間中的非泛型集合類( ArrayList, BitArray, Hashtable, Queue, SortedList, 和 Stack)非泛型集合類可以包含多種不同的對象,而且,庫還支援序列化和還原序列化一維,多維,不規則的數組。
- 支援通過對基類/介面的引用,實現對一些對象集合的序列化和還原序列化。
- 支援多級還原序列化
- 程式員可以為產生的xml提供注釋
- 當進行還原序列化的時候,程式員可以選擇性對於那些與類的屬性相關,但沒有出現在xml檔案中的資料應該如何處理。這種情況下可以看錯是一個錯誤,然後類庫拋出一些異常,或者記錄錯誤,或者可以被看成一個警告,然後用程式員預定義的值賦給對應的屬性,而且,程式可以可以選擇忽略這個問題,相關的異常將既不拋出也不作任何記錄。請查看保留Null 參考標識那一節 看看什麼時候可以忽略孤立的資料也許對你有協助
- 程式員可以自己選擇錯誤處理規則,對於資料敏感的應用程式,程式員可以選擇在任何異常的情況下,庫都應該拋出並且記錄異常,對於其他的一些情況(比如要求不那麼高的設定檔的儲存),程式員可以選擇把異常僅僅看成一個警告,僅僅記錄一下,讓程式的其他部分繼續運行。
文檔下載:XML序列化神器
著作權聲明:本文由http://leaver.me 翻譯,歡迎轉載分享。請尊重作者勞動,轉載時保留該聲明和作者部落格連結,謝謝!