[发明专利]通用的对象序列化的实现方法有效
| 申请号: | 201210475914.4 | 申请日: | 2012-11-21 |
| 公开(公告)号: | CN103019689B | 公开(公告)日: | 2017-02-15 |
| 发明(设计)人: | 朱建云;巩荣海 | 申请(专利权)人: | 上海富欣智能交通控制有限公司 |
| 主分类号: | G06F9/44 | 分类号: | G06F9/44 |
| 代理公司: | 上海浦一知识产权代理有限公司31211 | 代理人: | 孙大为 |
| 地址: | 201203 上海市浦东新*** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 通用 对象 序列 实现 方法 | ||
技术领域
本发明属于软件开发和算法领域。
背景技术
对象序列化技术,是将对象数据转换成另一种持久化数据形式的技术,转换之后的数据形式必须易于存储在外部介质上,或者易于使用网络进行传输。为了使得存储和传输后的数据能够再次变回内存中的对象,这样的转换必须是可逆的。对象序列化技术在数据的传输和存储过程中,引入了对象的抽象,使得这个过程更加直观,使用更加方便,因此对象序列化技术在面向对象的软件系统中使用非常广泛。
由于对象序列化技术使用的广泛性,很多的计算机语言都在语言层面,通过标准库的方式,提供对象序列化的功能的支持,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++类也必须是可序列化的。
对象的关联又分为两种,普通关联和引用关联。普通关联指成员变量的类型为类本身,引用关联指成员变量的类型为类指针。
序列化方法除了支持单个的属性和关联以外,还支持属性列表和关联列表,以及属性字典和关联字典。关联列表和关联字典都是关联的容器,其中的元素既可以是普通关联,也可以是引用关联。关联字典的键值,必须是序列化方法所支持的基本类型中的一种。下面的表格说明了序列化方法的详细内容:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海富欣智能交通控制有限公司,未经上海富欣智能交通控制有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210475914.4/2.html,转载请声明来源钻瓜专利网。





