[原译]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类的问题有几下几点
- 程序员不能自由的选择生成的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文件中的数据应该如何处理。这种情况下可以看错是一个错误,然后类库抛出一些异常,或者记录错误,或者可以被看成一个警告,然后用程序员预定义的值赋给对应的属性,而且,程序可以可以选择忽略这个问题,相关的异常将既不抛出也不作任何记录。请查看保留空引用标识那一节 看看什么时候可以忽略孤立的数据也许对你有帮助
- 程序员可以自己选择错误处理规则,对于数据敏感的应用程序,程序员可以选择在任何异常的情况下,库都应该抛出并且记录异常,对于其他的一些情况(比如要求不那么高的配置文件的存储),程序员可以选择把异常仅仅看成一个警告,仅仅记录一下,让程序的其他部分继续运行。
文档下载:XML序列化神器
著作权声明:本文由http://leaver.me 翻译,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述