一种利用xml实现通用化数据交换的方法和系统的制作方法

文档序号:6525110阅读:145来源:国知局
一种利用xml实现通用化数据交换的方法和系统的制作方法
【专利摘要】本发明公开一种利用xml实现通用化数据交换的方法和系统,其中,包括步骤:采用xml格式对数据的结构进行描述,所述数据描述后包括字段名和预设长度的字段值及字段的起始位置信息;在进行序列化时,根据xml描述信息,将数据各字段值设置到指定位置,在设置完毕后得到数据的二进制流;在进行反序列化时,根据xml描述信息,利用数据的各字段名从二进制流中读取相应字段值。本发明采用通用化的设计,对二进制数据流进行反序列化,或者将数据序列化成二进制数据流,本发明的方法使得CS架构系统中的数据维护更加简便,即使修改某一数据结构,也无需对整个系统进行重新编译,同时也减少了不必要的网络流量。
【专利说明】一种利用xml实现通用化数据交换的方法和系统
【技术领域】
[0001]本发明涉及网络通信【技术领域】,尤其涉及一种利用xml实现通用化数据交换的方法和系统。
【背景技术】
[0002]在CS架构的系统中,客户端与服务端之间的通讯,需要两端协商并定义消息的格式;在一些独立的应用程序中,根据业务需要也须定义数据格式;在C、C++开发的系统中,这些消息或者数据一般采用数据结构(Struct)来定义,这些数据结构的定义,通常会放在一个头文件中,以便被引用。但是对于一个比较复杂CS架构的系统,消息或数据比较多,随之而来的是,需要定义很多数据结构,维护起来相当困难,而且一旦修改其中的某一个数据结构,则整个系统都需要重新编译,所以现有使用数据结构定义的网络通信的数据交换方法效率较低。
[0003]有些CS架构的系统采用xml、json的格式来传输数据,虽然这种方式使用起来较方便,数据格式也比较清晰,但是由于上述传输方式传输的是字符型数据,数据量大,在通讯时带来不必要的网络流量。
[0004]因此,现有技术还有待于改进和发展。

【发明内容】

[0005]鉴于上述现有技术的不足,本发明的目的在于提供一种利用xml实现通用化数据交换的方法和系统,旨在解决现有的数据传输方式维护不方便、效率低、流量大的问题。
[0006]本发明的技术方案如下:
一种利用xml实现通用化数据交换的方法,其中,包括步骤:
采用xml文件对数据的结构进行描述,所述数据描述后包括字段名和预设长度的字段值及字段的起始位置信息;
在进行序列化时,根据xml描述信息,将数据各字段值设置到指定位置,在设置完毕后得到数据的二进制流;
在进行反序列化时,根据xml描述信息,利用数据的各字段名从二进制流中读取相应字段值。
[0007]所述的利用xml实现通用化数据交换的方法,其中,采用xml文件对数据进行描述的步骤具体包括:
对数据的名称、类型、长度及位置分别描述。
[0008]所述的利用xml实现通用化数据交换的方法,其中,当数据类型为char时,其长度为I字节,当数据类型为short时,其长度为2字节,当数据类型为int时,其长度为4字节,当数据类型为long时,其长度为4字节,当数据类型为float时,其长度为4字节,当数据类型为double时,其长度为8字节,当数据类型为string时,其长度不定。
[0009]所述的利用xml实现通用化数据交换的方法,其中,序列化的步骤具体包括: B1、解析xml,加载数据的xml描述信息,获取数据的ID ;
B2、根据数据的ID以及xml描述信息,确定数据的大小,根据该大小申请数据的内存;B3、根据xml描述信息中的各字段名对应的数据长度及位置信息,设置相应字段值到所述内存中得到数据的二进制流。
[0010]所述的利用xml实现通用化数据交换的方法,其中,反序列化的步骤具体包括:
Cl、解析xml,加载数据的xml描述信息,从二进制流的开头读取数据的ID ;
C2、根据xml描述信息中的各字段名对应的数据大小,获取相应字段值在二进制流中的开始位置以及结束位置的信息;
C3、根据字段开始位置以及结束位置的信息读取字段值,并结合相应字段名还原出原始数据。
[0011]一种利用xml实现通用化数据交换的系统,其中,包括:
描述模块,用于采用xml文件对数据的结构进行描述,所述数据描述后包括字段名和预设长度的字段值及字段的起始位置信息;
序列化模块,用于在进行序列化时,根据xml描述信息,将数据各字段值设置到指定位置,在设置完毕后得到数据的二进制流;
反序列化模块,用于在进行反序列化时,根据xml描述信息,利用数据的各字段名从二进制流中读取相应字段值。
[0012]所述的利用xml实现通用化数据交换的系统,其中,所述描述模块用于对数据的名称、类型、长度及位置分别描述。
[0013]所述的利用xml实现通用化数据交换的系统,其中,所述序列化模块具体包括: 数据ID获取单元,用于解析xml,加载数据的xml描述信息,获取数据的ID ;
内存申请单元,用于根据数据的ID以及xml描述信息,确定数据的大小,根据该大小申请数据的内存;
字段值设置单元,用于根据xml描述信息中的各字段名相应的数据长度及位置信息,设置相应字段值到所述内存中得到数据的二进制流。
[0014]所述的利用xml实现通用化数据交换的系统,其中,所述反序列化模块具体包括: 数据ID读取单元,用于解析xml,加载数据的xml描述信息,从二进制流的开头读取数
据的ID ;
位置信息获取单元,用于根据xml描述信息中的各字段名对应的数据大小,获取相应字段值在二进制流中的开始位置以及结束位置的信息;
字段值读取单元,用于根据字段开始位置以及结束位置的信息读取字段值,并结合相应字段名还原出原始数据。
[0015]所述的利用xml实现通用化数据交换的系统,其中,当数据类型为char时,其长度为I字节,当数据类型为short时,其长度为2字节,当数据类型为int时,其长度为4字节,当数据类型为long时,其长度为4字节,当数据类型为float时,其长度为4字节,当数据类型为double时,其长度为8字节,当数据类型为string时,其长度不定。
[0016]有益效果:本发明针对CS架构中客户端与服务端之间交换的数据,进行通用化的设计,采用xml对数据结构进行描述,根据xml的描述信息,对数据进行序列化与反序列化,达到通过xml描述,即可对二进制数据流进行反序列化,或者将数据序列化成二进制数据流,本发明的方法使得CS架构系统中的数据维护更加简便,即使修改某一数据结构,也无需对整个系统进行重新编译,同时也减少了不必要的网络流量。
【专利附图】

【附图说明】
[0017]图1为本发明一种利用xml实现通用化数据交换的方法较佳实施例的流程图。
[0018]图2为数据的二进制流的结构示意图。
[0019]图3为利用本发明的方法对数据进行xml描述后的数据块的结构示意图。
[0020]图4为图1所示方法中步骤S102的具体流程图。
[0021]图5为图1所示方法中步骤S103的具体流程图。
[0022]图6为本发明一种利用xml实现通用化数据交换的系统较佳实施例的结构框图。
[0023]图7为图6所示系统中序列化模块的具体结构框图。
[0024]图8为图6所示系统中反序列化模块的具体结构框图。
【具体实施方式】
[0025]本发明提供一种利用xml实现通用化数据交换的方法和系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0026]请参阅图1,图1为本发明一种利用xml实现通用化数据交换的方法较佳实施例的流程图,如图所示,其包括步骤:
5101、采用xml格式对数据的结构进行描述,所述数据描述后包括字段名和预设长度的字段值及字段的起始位置信息;
5102、在进行序列化时,根据xml描述信息,将数据各字段值设置到指定位置,在设置完毕后得到数据的二进制流;
5103、在进行反序列化时,根据xml描述信息,利用数据的各字段名从二进制流中读取相应字段值。
[0027]在步骤SlOl中,首先采用xml格式的文件对数据的结构进行描述。在网络上传输的数据都是二进制流的数据,如图2所示,其由两部分组成,每个数据都有系统全局唯一的标识(ID),Data是真正的数据部分,Data部分的数据格式,可由xml文件来进行描述。本实施例中的描述方法中,对数据的名称、类型、长度及位置分别进行了描述。例如一条登陆消息包含了登陆的用户名、密码、客户端当前版本号,那么可采用如下的xml进行描述:
〈DataField name=〃login〃 id=〃1000〃 description=〃user login〃>
〈Field name=〃version〃 type=〃char〃 description=^system version〃/>
〈Field name=〃user name^ type=〃string〃 length=〃32〃/>
〈Field name=〃password〃 type=〃string〃 length=〃32〃/>
〈/DataField〉
在上述xml格式的文件描述了一条名为“login”的消息,其ID为1000,其数据格式中包含了三个字段:version、user name、password,这三个字段的信息分别为:version:类型为char,长度为I字节,在数据的第I个字节。
[0028]user name:类型为string,长度为32字节,在数据的第2~33字节。[0029]password:类型为string,长度为32字节,在数据的第34~65字节。
[0030]即通过上述xml文件描述了数据的名称、类型、长度、以及位置的信息。
[0031]整个数据块的结构,如图3所示,ID在前,之后是version (客户端版本号),其长度为I字节,然后是user name (用户名),其长度为32字节,再是password (密码),其长度为32字节。
[0032]而如果采用C/C++语言中的struct来表示数据的Data部分,其定义如下:
【权利要求】
1.一种利用xml实现通用化数据交换的方法,其特征在于,包括步骤: 采用xml文件对数据的结构进行描述,所述数据描述后包括字段名和预设长度的字段值及字段的起始位置信息; 在进行序列化时,根据xml描述信息,将数据各字段值设置到指定位置,在设置完毕后得到数据的二进制流; 在进行反序列化时,根据xml描述信息,利用数据的各字段名从二进制流中读取相应字段值。
2.根据权利要求1所述的利用xml实现通用化数据交换的方法,其特征在于,采用xml文件对数据进行描述的步骤具体包括: 对数据的名称、类型、长度及位置分别描述。
3.根据权利要求2所述的利用xml实现通用化数据交换的方法,其特征在于,当数据类型为char时,其长度为I字节,当数据类型为short时,其长度为2字节,当数据类型为int时,其长度为4字节,当数据类型为long时,其长度为4字节,当数据类型为float时,其长度为4字节,当数据类型为double时,其长度为8字节,当数据类型为string时,其长度不定。
4.根据权利要求2所述的利用xml实现通用化数据交换的方法,其特征在于,序列化的步骤具体包括: B1、解析xml,加载数据的xml描述信息,获取数据的ID ; B2、根据数据的ID以及xml描述信息,确定数据的大小,根据该大小申请数据的内存;B3、根据xml描述信息中的各字段名对应的数据长度及位置信息,设置相应字段值到所述内存中得到数据的二进制流。
5.根据权利要求2所述的利用xml实现通用化数据交换的方法,其特征在于,反序列化的步骤具体包括: Cl、解析xml,加载数据的xml描述信息,从二进制流的开头读取数据的ID ; C2、根据xml描述信息中的各字段名对应的数据大小,获取相应字段值在二进制流中的开始位置以及结束位置的信息; C3、根据字段开始位置以及结束位置的信息读取字段值,并结合相应字段名还原出原始数据。
6.一种利用xml实现通用化数据交换的系统,其特征在于,包括: 描述模块,用于采用xml文件对数据的结构进行描述,所述数据描述后包括字段名和预设长度的字段值及字段的起始位置信息; 序列化模块,用于在进行序列化时,根据xml描述信息,将数据各字段值设置到指定位置,在设置完毕后得到数据的二进制流; 反序列化模块,用于在进行反序列化时,根据xml描述信息,利用数据的各字段名从二进制流中读取相应字段值。
7.根据权利要求6所述的利用xml实现通用化数据交换的系统,其特征在于,所述描述模块用于对数据的名称、类型、长度及位置分别描述。
8.根据权利要求7所述的利用xml实现通用化数据交换的系统,其特征在于,所述序列化模块具体包括:数据ID获取单元,用于解析xml,加载数据的xml描述信息,获取数据的ID ; 内存申请单元,用于根据数据的ID以及xml描述信息,确定数据的大小,根据该大小申请数据的内存; 字段值设置单元,用于根据xml描述信息中的各字段名相应的数据长度及位置信息,设置相应字段值到所述内存中得到数据的二进制流。
9.根据权利要求7所述的利用xml实现通用化数据交换的系统,其特征在于,所述反序列化模块具体包括: 数据ID读取单元,用于解析xml,加载数据的xml描述信息,从二进制流的开头读取数据的ID ; 位置信息获取单元,用于根据xml描述信息中的各字段名对应的数据大小,获取相应字段值在二进制流中的开始位置以及结束位置的信息; 字段值读取单元,用于根据字段开始位置以及结束位置的信息读取字段值,并结合相应字段名还原出原始数据。
10.根据权利要求7所述的利用xml实现通用化数据交换的系统,其特征在于,当数据类型为char时,其长度为I字节,当数据类型为short时,其长度为2字节,当数据类型为int时,其长度为4字节,当数据类型为long时,其长度为4字节,当数据类型为float时,其长度 为4字节,当数据类型为double时,其长度为8字节,当数据类型为string时,其长度不定。
【文档编号】G06F17/30GK103699633SQ201310716493
【公开日】2014年4月2日 申请日期:2013年12月23日 优先权日:2013年12月23日
【发明者】朱锦华 申请人:Tcl集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1