专利名称:通用的对象序列化的实现方法
通用的对象序列化的实现方法技术领域
本发明属于软件开发和算法领域。
背景技术:
对象序列化技术,是将对象数据转换成另一种持久化数据形式的技术,转换之后 的数据形式必须易于存储在外部介质上,或者易于使用网络进行传输。为了使得存储和传 输后的数据能够再次变回内存中的对象,这样的转换必须是可逆的。对象序列化技术在数 据的传输和存储过程中,引入了对象的抽象,使得这个过程更加直观,使用更加方便,因此 对象序列化技术在面向对象的软件系统中使用非常广泛。
由于对象序列化技术使用的广泛性,很多的计算机语言都在语言层面,通过标准 库的方式,提供对象序列化的功能的支持,Java, C#,Python等等语言莫不如是。C++语言 本身并没有在标准库中提供对象序列化的功能,如果需要使用C++语言实现对象序列化, 开发者要么自己设计,要么使用第三方库。目前C++中使用比较广泛的对象序列化库包括 MFC, boost: : serialization 等等。
MFC库的对象序列化功能无法脱离MFC库单独使用,不具有可移植性,大大限制了 它的适用范围,而且MFC库将对象序列化成二进制数据,不具有可读性,也无法进行手工编 辑。另外,MFC库是一个相对古老的设计,用户需要定义很多宏,本身的使用不是很方便。 boost: : serialization库参照了 MFC库序列化功能的实现,它同时改进了前者的很多缺 点。它支持将对象序列化成字符串,写入XML文件,这使得手工编辑变的方便。但是它不支 持对文件的加密功能。
不管是MFC库,还是boost: : serialization库,都仅仅是实现了对象的序列化功 能,开发人员如如要使用这些库,必须自己去设计对象具体的外部表现形式。本发明提供了 一个通用的对象序列化方法,并提供了支持这个方法的库的实现方法,开发人员可以方便 的使用这个序列化方法和库,轻松的实现复杂的序列化功能。发明内容
本发明所要解决的技术问题是提供一种通用的对象序列化的实现方法,它可以使 用XML格式表示对象的序列化数据,可读性强,方便编辑。
为了解决以上技术问题,本发明提供了一种通用的对象序列化的实现方法;包括 对象序列化成XML文本内容以及序列化之后的XML文本内容还原成对象。
本发明的有益效果在于可以使用XML格式表示对象的序列化数据,可读性强,方 便编辑。
对象序列化成XML文本内容包括以下步骤
将对象存放于对象仓库中;
调用对象,构建对象结构树;
序列化管理器将前序遍历对象结构树,对结构树的每个节点进行序列化操作,生成XML格式的字符串;
将XML字符串存储到XML文件中或者通过网络发送。
序列化之后的XML文本内容,还原成对象包括以下步骤
读取XML字符串;
根据XML字符串,构建对象结构树;
序列化管理器使用前序遍历的方式遍历对象结构树,根据模板对象,动态生成对象;
序列化管理器使用后续遍历的方式遍历对象结构树,填充对象数据;
序列化管理器使用后续遍历的方式遍历对象结构树,初始化对象数据;
注册动态生成的对象到对象仓库。
下面结合附图和具体实施方式
对本发明作进一步详细说明。
图1描述了将C++语言中的对象序列化成XML文本内容的过程;
图2描述了序列化之后的XML文本内容,还原成C++对象的过程。
具体实施方式
本发明解决现有的C++语言对象序列化库只提供序列化功能,而没有序列化方法的问题。
本发明的序列化方法使用XML标记语言来作为对象的外部表示。对象的数据有属性和关联两种,不管是属性还是关联,都是对象的成员变量。对象的属性是指类型为方法所支持基本类型(下文会详细说明)的成员变量;对象的关联是指类型为某个C++类的成员变量,这个C++类也必须是可序列化的。
对象的关联又分为两种,普通关联和引用关联。普通关联指成员变量的类型为类本身,引用关联指成员变量的类型为类指针。
序列化方法除了支持单个的属性和关联以外,还支持属性列表和关联列表,以及属性字典和关联字典。关联列表和关联字典都是关联的容器,其中的元素既可以是普通关联,也可以是引用关联。关联字典的键值,必须是序列化方法所支持的基本类型中的一种。 下面的表格说明了序列化方法的详细内容
权利要求
1.一种通用的对象序列化的实现方法;其特征在于,包括对象序列化成XML文本内容以及序列化之后的XML文本内容还原成对象。
2.如权利要求1所述的通用的对象序列化的实现方法;其特征在于,对象序列化成XML文本内容包括以下步骤 将对象存放于对象仓库中; 调用对象,构建对象结构树; 序列化管理器将前序遍历对象结构树,对结构树的每个节点进行序列化操作,生成XML格式的字符串; 将XML字符串存储到XML文件中或者通过网络发送。
3.如权利要求1所述的通用的对象序列化的实现方法;其特征在于,序列化之后的XML文本内容,还原成对象包括以下步骤 读取XML字符串; 根据XML字符串,构建对象结构树; 序列化管理器使用前序遍历的方式遍历对象结构树,根据模板对象,动态生成对象; 序列化管理器使用后续遍历的方式遍历对象结构树,填充对象数据; 序列化管理器使用后续遍历的方式遍历对象结构树,初始化对象数据;注册动态生成的对象到对象仓库。
全文摘要
本发明公开了一种通用的对象序列化的实现方法;包括对象序列化成XML文本内容以及序列化之后的XML文本内容还原成对象。本发明可以使用XML格式表示对象的序列化数据,可读性强,方便编辑。
文档编号G06F9/44GK103019689SQ20121047591
公开日2013年4月3日 申请日期2012年11月21日 优先权日2012年11月21日
发明者朱建云, 巩荣海 申请人:上海富欣智能交通控制有限公司