[原譯]YAXLib---- XML序列化神器


今天早上翻譯了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 保留空引用標識... 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類的問題有幾下幾點

  1. 程序員不能自由的選擇生成的xml的結構
  2. 不支持序列化一些集合類,比如Dictionary<,> 或者IEnumerable<>的屬性
  3. 當反序列化的時候,如果缺失了一些域,則反序列化失敗,這就使得用來存儲一ixekeyi被用戶編輯的配置文件變得不合適了。

 

2 為什么使用YAXLib

YAXLib解決上述問題的特點

  1. 程序員可以決定xml文件的結構,一個屬性可以是一個子元素,或者是其他屬性的屬性,或者是一個在類中沒有對應屬性的元素。
  2. 集合類也可以被序列化成一個逗號分隔(也可以是其他任何分隔符)的數據項列表,而且。為Dictionary<,>對象實現了一些特殊的格式化功能,這樣,使得程序員可以完全控制生成的xml文件的結構
  3. 他支持System.Collections.Generic 命名空間中的所有泛型集合類(像DictionaryHashSetLinkedListListQueue,SortedDictionarySortedList, 和 Stack) 和在System.Collections  命名空間中的非泛型集合類( ArrayListBitArrayHashtableQueueSortedList, 和 Stack)非泛型集合類可以包含多種不同的對象,而且,庫還支持序列化和反序列化一維,多維,不規則的數組。
  4. 支持通過對基類/接口的引用,實現對一些對象集合的序列化和反序列化。
  5. 支持多級反序列化
  6.  程序員可以為生成的xml提供注釋
  7. 當進行反序列化的時候,程序員可以選擇性對於那些與類的屬性相關,但沒有出現在xml文件中的數據應該如何處理。這種情況下可以看錯是一個錯誤,然后類庫拋出一些異常,或者記錄錯誤,或者可以被看成一個警告,然后用程序員預定義的值賦給對應的屬性,而且,程序可以可以選擇忽略這個問題,相關的異常將既不拋出也不作任何記錄。請查看保留空引用標識那一節 看看什么時候可以忽略孤立的數據也許對你有幫助
  8. 程序員可以自己選擇錯誤處理規則,對於數據敏感的應用程序,程序員可以選擇在任何異常的情況下,庫都應該拋出並且記錄異常,對於其他的一些情況(比如要求不那么高的配置文件的存儲),程序員可以選擇把異常僅僅看成一個警告,僅僅記錄一下,讓程序的其他部分繼續運行。

文檔下載:XML序列化神器

著作權聲明:本文由http://leaver.me 翻譯,歡迎轉載分享。請尊重作者勞動,轉載時保留該聲明和作者博客鏈接,謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM