• [原译]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 翻译,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!

  • 相关阅读:
    ajax 传递参数中文乱码解决办法
    jQuery 时间戳转化成时间
    IDEA2017 导入 SVN上的 Myeclipse或Eclipse 项目
    ajax返回json数据,对其中日期的解析
    MYSQL 按照字母排序查询
    JVM介绍
    正则表达式
    could not find the main class错误
    转:MyEclipse使用总结——MyEclipse10安装SVN插件
    转:Oracle数据库sqlplus与plsqldev解决乱码
  • 原文地址:https://www.cnblogs.com/lazycoding/p/2712309.html
Copyright © 2020-2023  润新知