一种快速处理XML压缩数据的方法及其装置转让专利

申请号 : CN200910238256.5

文献号 : CN102073663B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王晓磊仇睿恒张磊王毅

申请人 : 北大方正集团有限公司北京大学北京北大方正技术研究院有限公司

摘要 :

本发明提供一种快速读取XML压缩数据的方法及其接口,其通过将XML压缩数据转换为混合数据类型对象来产生包含混合数据类型对象的消息序列,其中,所述混合数据类型采用“数据类型标记+数据存储部分”的方式。相应地,提供一种快速处理XML压缩数据的方法及其装置,其通过将XML压缩数据转换为混合数据类型对象来产生包含混合数据类型对象的消息序列;根据读取的消息序列中的混合数据类型对象来查找对应的数据处理逻辑和转换混合数据,并将转换的数据传送给查找到的数据处理逻辑。本发明通过混合数据类型和流式读取接口,对XML结构信息和某些类型的数据,直接传递读取的原始压缩数据,从而节省了字符串操作所带来的运算消耗和存储消耗。

权利要求 :

1.一种快速读取XML压缩数据的方法,其特征在于,

通过将XML压缩数据转换为混合数据类型对象来产生包含混合数据类型对象的消息序列,其中,所述混合数据类型采用“数据类型标记+数据存储部分”的方式表示XML压缩数据中的XML结构信息和XML数据;在所述混合数据类型中,数据类型标记表示各种数据类型,数据存储部分存储数据。

2.根据权利要求1所述的方法,其特征在于,对于数字型数据,在数据存储部分中直接存储其原始压缩数据,对于字符串数据,在数据存储部分中存储指向该字符串在计算机内存中的地址的指针。

3.一种快速处理XML压缩数据的方法,包括:

通过将XML压缩数据转换为混合数据类型对象来产生包含混合数据类型对象的消息序列;

根据读取的消息序列中的混合数据类型对象来查找对应的数据处理逻辑;

根据读取的消息序列中的混合类型对象将该对象的数据转换为所述数据处理逻辑所需的数据类型,并将转换的数据传送给该数据处理逻辑,其中,所述混合数据类型采用“数据类型标记+数据存储部分”的方式表示XML压缩数据中的XML结构信息和XML数据;在所述混合数据类型中,数据类型标记表示各种数据类型,数据存储部分存储数据。

4.根据权利要求3所述的方法,其特征在于,对于数字型数据,在数据存储部分中直接存储其原始压缩数据,对于字符串数据,在数据存储部分中存储指向该字符串在计算机内存中的地址的指针。

5.根据权利要求3所述的方法,其特征在于,所述查找步骤包括:通过比较传送标签名和属性名的消息中的混合数据类型对象中的数字,来查找对应的数据处理逻辑。

6.根据权利要求3所述的方法,其特征在于,所述转换步骤包括:通过传送数据的消息中的混合数据类型对象来判断该消息中的数据类型是否与所述数据处理逻辑所需的数据类型相匹配;

对于混合数据类型能直接表示的值,混合数据类型对象中保存的就是所需的数据,不进行转换;

对于混合数据类型不能表示的值,存储在混合数据类型对象中的是原始的字符串值,将该字符串值转换为所述数据处理逻辑所需的数据类型。

7.一种用于快速处理XML压缩数据的装置,包括:

流式读取接口,通过将XML压缩数据转换为混合数据类型对象来产生包含混合数据类型对象的消息序列;

消息序列处理单元,根据从流式读取接口读取的消息序列中的混合数据类型对象,查找对应的数据处理逻辑,将该混合数据类型对象中的混合数据转换为该数据处理逻辑所需的数据,并将转换的数据传送给该数据处理逻辑,其中,所述混合数据类型采用“数据类型标记+数据存储部分”的方式表示XML压缩数据中的XML结构信息和XML数据;在所述混合数据类型中,数据类型标记表示各种数据类型,数据存储部分存储数据。

8.根据权利要求7所述的装置,其特征在于,对于数字型数据,在数据存储部分中直接存储其原始压缩数据,对于字符串数据,在数据存储部分中存储指向该字符串在计算机内存中的地址的指针。

9.根据权利要求7所述的装置,其特征在于,所述消息序列处理单元执行以下操作:通过传送标签名和属性名的消息中的混合数据类型对象中的数字比较来查找对应的数据处理逻辑;

通过传送数据的消息中的混合数据类型对象来判断该消息中的数据类型是否与所述数据处理逻辑所需的数据类型相匹配;

对于混合数据类型能直接表示的值,混合数据类型对象中保存的就是所需的数据,不进行转换;

对于混合数据类型不能表示的值,存储在混合数据类型对象中的是原始的字符串值,将该字符串值转换为所述数据处理逻辑所需的数据类型。

说明书 :

一种快速处理XML压缩数据的方法及其装置

技术领域

[0001] 本发明涉及XML数据处理领域,尤其涉及一种快速处理XML压缩数据的方法及其装置。

背景技术

[0002] 在现有的XML数据压缩方法中,有很多压缩方法是基于XML结构和数据特征的处理方法,比如XGRIND、XPRESS等。在这些方法中,一方面,避免使用XML原始的容器方式表示结构,并且在压缩后的数据中直接保存XML的结构信息,以实现对压缩数据的直接查询;另一方面,把具有同种数据类型或具有类似特征的数据放到一起压缩,以达到较高的数据压缩比。从这类将结构与数据分离压缩的压缩数据中读取信息时,通常的做法是首先解压缩出原始XML数据,再使用公知的XML解析方式进行解析,相关内容可参见专利号为US7,013,425B2的美国专利“Data processing method,and encoder,decoderand xml parser for encoding and decoding an xml document”和公开号为US 2004/0225754A1的美国专利申请“Method ofcompressing xml data and method of decompressing compressed xmldata”。
[0003] 比如,在XGRIND压缩方法中,分别对表示XML结构的元数据(XML标签和属性的形式)、枚举型属性值和一般元素/属性值采取不同的压缩方法。具体地讲,对于元数据,每个开始标签用一个字符“T”加上一个唯一分配的元素ID编码,所有的结束标签用一个字符“/”编码,属性名用一个字符“A”加上一个唯一分配的属性ID编码;对于枚举型属性值,采用字典编码法;对于一般元素/属性值,采用霍夫曼编码法(参见http://dsl.serc.iisc.ernet.in/pub/xgrindicde02.pdf)。按照现有方法对XGRIND压缩数据中的结构信息进行读取时,程序首先需要读出表示XML结构信息的字符和编号,通过某种方式转换为开始标签、结束标签或属性名的字符串表示,再使用公知的XML解析方法对字符串形式的XML数据进行解析,从而分析出XML结构信息。对XML数据进行读取时,也是先解压缩成字符串表示,然后对字符串表示的XML数据进行解析。在整个读取过程中,额外的计算机资源消耗包括在整个读取过程中,额外的计算机资源消耗包括解压过程中将XML结构信息和XML数据处理为符合XML形式字符串的运算消耗、解压缩后XML数据的存储消耗、XML解析方法中的字符串比较、查找的运算消耗以及解析字符串形式的XML数据的运算消耗。这些计算机资源消耗造成了程序运行效率的降低。
[0004] 再比如,在XPRESS压缩方法中,分别对标签和不同类型的数据值采取不同的压缩方法。具体地讲,对于标签的压缩,将元素的路径编码为[0.0,1.0]中的某一间隔,并使用这些间隔之间的包含关系,对路径表达进行估计。对于数据值的压缩,具体地,对于数字型数据值,整数则采用差分编码,浮点数则采用f32编码;对于字符串型数据值,枚举型则采用字典编码,文本数据则采取霍夫曼编码(参见http://islab.kaist.ac.kr/chungcw/InterConfPapers/sigmod2003_jkmin.pdf)。按照现有方法读取XPRESS压缩数据时,除了上述问题之外,还存在关于浮点数类型的数据的问题。具体地讲,如上所述,在XPRESS中,对类型为xsd:float的XML数据采用f32编码,其数据表示方式与IEEE单精度浮点数表示相同,在压缩后的数据中记录为4个字节。按照现有方法对该类型的数据进行读取时,因为XML Schema规范规定类型为xsd:float的数据必须表示为十进制形式,所以XML数据解压过程涉及从IEEE单精度浮点数表示到浮点数的十进制字符串表示的转换,需要经过多次浮点数乘法和浮点数加法运算;而在应用程序内部,该XML数据一般对应于计算机中的一个浮点数类型的数值,在大多数计算机系统中,浮点数类型数值的表示方式正是IEEE单精度浮点数表示,因此,XML数据解析过程又涉及再把浮点数的十进制字符串转换为IEEE单精度浮点数表示,同样需要经过多次浮点数乘法和浮点数加法运算。可以看到,整个过程中有两次多余的数据表示方式转换,而且对常见的计算机体系架构来说,浮点数运算的开销是相对较大的。
[0005] 再比如,在专利号为US 6,883,137B1的美国专利“System andmethod for schema-driven compression of extensible mark-uplanguage(XML)documents”中,在压缩过程中,首先将输入的XML流或DOM树分为结构流和数据流两个子流,然后,将结构流编码为WBXML(WAP二进制XML)格式,使用传统压缩算法(比如,GZIP)对数据流进行压缩。在读取压缩数据过程中,对编码的结构流进行解码,根据SAX解析方法或者DOM解析方法产生SAX事件或者建立DOM树来获得XML结构信息;对压缩的数据流进行解压缩来获得XML数据。在这种方法中,结构流编码成二进制格式,不转换为字符串表示,直接把二进制格式的结构流解析为SAX消息序列或DOM树结构。这样,可直接使用XML结构信息,而不需经过字符串解析。但是,该方法对于数据流采用传统压缩算法进行压缩,在读取时也必须先解压为字符串表示、再进行字符串解析,因此,仍然存在先解压再解析所带来的运算消耗。

发明内容

[0006] 为了解决现有XML压缩数据读取方法中的上述不足,本发明提供一种快速处理XML压缩数据的方法及其装置,以减少在读取XML压缩数据时的计算机资源消耗,提高程序运行效率。
[0007] 为了实现以上目的,本发明提供一种快速读取XML压缩数据的方法,该方法通过将XML压缩数据转换为混合数据类型对象来产生包含混合数据类型对象的消息序列,其中,所述混合数据类型采用“数据类型标记+数据存储部分”的方式表示XML压缩数据中的XML结构信息和XML数据。
[0008] 在所述混合数据类型中,数据类型标记表示各种数据类型,数据存储部分存储数据,具体地,对于数字型数据,在数据存储部分中直接存储其原始压缩数据,对于字符串数据,在数据存储部分中存储指向该字符串在计算机内存中的地址的指针。
[0009] 相应地,提供一种快速处理XML压缩数据的方法,该方法包括:通过将XML压缩数据转换为混合数据类型对象来产生包含混合数据类型对象的消息序列;根据读取的消息序列中的混合数据类型对象来查找对应的数据处理逻辑;根据读取的消息序列中的混合类型对象将该对象中的数据转换为所述数据处理逻辑所需的类型,并将转换的数据传送给该数据处理逻辑。
[0010] 所述查找步骤包括:通过传送标签名和属性名的消息中的混合数据类型对象中的数字比较来查找对应的数据处理逻辑。
[0011] 所述转换步骤包括:通过传送数据的消息中的混合数据类型对象来判断该消息中的数据类型是否与所述数据处理逻辑所需的数据类型相匹配;对于混合数据类型能直接表示的值,混合数据类型对象中保存的就是所需的数据,不进行转换;对于混合数据类型不能表示的值,存储在混合数据类型对象中的是原始的字符串值,将该字符串值转换为所述数据处理逻辑所需的数据类型。
[0012] 相应地,提供一种用于快速读取XML压缩数据的流式读取接口,该接口通过将XML压缩数据转换为混合数据类型对象来产生包含混合数据类型对象的消息序列。
[0013] 相应地,提供一种用于快速处理XML压缩数据的装置,该装置包括:流式读取接口,通过将XML压缩数据转换为混合数据类型对象来产生包含混合数据类型对象的消息序列;消息序列处理单元,根据从流式读取接口读取的消息序列中的混合数据类型对象,查找对应的数据处理逻辑,将该混合数据类型对象中的混合数据转换为该数据处理逻辑所需的数据,并将转换的数据传送给该数据处理逻辑,
[0014] 所述消息序列处理单元执行以下操作:通过传送标签名和属性名的消息中的混合数据类型对象中的数字比较来查找对应的数据处理逻辑;通过传送数据的消息中的混合数据类型对象来判断该消息中的数据类型是否与所述数据处理逻辑所需的数据类型相匹配;对于混合数据类型能直接表示的值,混合数据类型对象中保存的就是所需的数据,不进行转换;对于混合数据类型不能表示的值,存储在混合数据类型对象中的是原始的字符串值,将该字符串值转换为所述数据处理逻辑所需的数据类型。
[0015] 本发明通过所述混合数据类型提供对XML压缩数据的流式读取接口。在混合数据类型表示中,对XML结构信息和某些类型的数据,直接传递读取的原始压缩数据,从而节省了XML结构数据和XML数据到字符串表示的转换,也节省了对字符串表示的解析,并且还节省了解压缩后XML数据的存储消耗。在对混合数据类型消息序列进行处理的过程中,仅通过数字比较就可实现现有技术中字符串的比较和查找操作。通过这些方法,减少了字符串操作所带来的计算机资源占用。

附图说明

[0016] 图1A为显示根据本发明的混合数据类型在C语言中的一种实现结构的示意图;
[0017] 图1B为几种常见数据类型使用混合数据类型的表示方法的示意图;
[0018] 图2A为根据现有技术的读取XML压缩数据的方法的示意性流程图;
[0019] 图2B为根据现有技术的XML SAX消息序列处理方法的示意图;
[0020] 图3A为根据本发明的XML压缩数据流式读取方法的示意性流程图;
[0021] 图3B为根据本发明的混合数据类型消息序列处理方法的示意性流程图。

具体实施方式

[0022] 本发明主要应用于将XML结构与数据分离压缩的XML压缩数据,其主要技术构思是基于一种混合数据类型来提供对XML压缩数据的流式读取方式及其相应的数据处理,以减少读取XML压缩数据时先解压再解析过程中字符串操作所带来的计算机资源消耗,提高程序运行效率。以下将结合附图和实施例对根据本发明的处理XML压缩数据的方法及其装置进行详细说明。
[0023] 在本发明中,定义一种混合数据类型,采用“数据类型标记+数据”的方式表示XML压缩数据中的XML结构信息和XML数据,在程序接口之间直接传递多种类型的数据,减少字符串类型的使用。具体地,在所述混合数据类型中,数据类型标记表示各种数据类型,数据存储部分存储数据,具体地,对于数字型数据,在数据存储部分中直接存储其原始压缩数据,对于字符串数据,在数据存储部分中存储指向该字符串在计算机内存中的地址的指针。
[0024] 图1A是显示根据本发明的混合数据类型在C语言中的一种实现结构的示意图。如图1A所示,整个混合类型数据结构分为两个部分:101是长度为1字节的数据类型标记,最多可以区分256种不同的数据类型;102是数据存储部分,几种不同大小的具体数据类型共享8字节的存储空间。
[0025] 图1B中列举了几种常见数据类型使用混合数据类型的表示方法,如图1B所示:整型数据使用N作为数据类型标记,整型值占用数据存储部分的4字节;再比如双精度浮点型数据使用D作为数据类型标记,并占用数据存储部分的8字节;对于字符串数据,由于字符串长度是不固定的,因此数据存储部分只存储一个占4字节(32位操作系统)或8字节(64位操作系统)的指针,指向计算机内存中另外一个位置上存储的字符串数据。
[0026] 从图1A和图1B可看出,所述混合数据类型在空间上是一段长度固定的数据,在时间上直接传递特定数据类型,要快于先转换为字符串表示再传递。而且,所述混合数据类型在程序运行时对计算机资源的占用很小。
[0027] 利用所述混合数据类型,本发明提供对XML压缩数据的流式读取方法,该方法将XML压缩数据转换为混合数据类型对象,从而产生包含混合数据类型对象的消息序列。
[0028] 从XML压缩数据读取包含混合数据类型对象的消息序列之后,对混合数据类型消息序列进行处理。具体包括:根据读取的消息序列中的混合数据类型对象,查找对应的数据处理逻辑,并将混合数据转换为对应的数据处理逻辑所需的数据,并将转换的数据传送给该数据处理逻辑。在查找的过程中,通过传送标签名和属性名的消息中的混合数据类型对象中的数字比较来查找对应的数据处理逻辑,而不是如现有技术那样进行字符串的比较、查找,从而可节省计算机资源占用。在转换的过程中,通过传送数据的消息中的混合数据类型对象来判断该消息中的数据类型是否与所述数据处理逻辑所需的数据类型相匹配,对于混合数据类型能直接表示的值,混合数据类型对象中保存的就是所需的数据,不进行转换,对于混合数据类型不能表示的值,存储在混合数据类型对象中的是原始的字符串值,进行字符串到所需数据类型的转换,从而可节省数据类型转换操作所带来的计算机资源占用。
[0029] 以下,为了详细说明本发明相对于现有技术的优点,首先参照图2A和图2B描述现有技术的一个实施例,然后参照图3A和图3B说明根据本发明的XML压缩数据处理方法及其对现有技术的改进。
[0030] 在图2A中,201、202是XML压缩方法所使用的标签名字典和属性名字典,使用一个数字编号对应于原始XML结构中的一个标签名或属性名;203是XML压缩方法所使用的枚举值字典,使用一个数字编号对应于XML中的一个枚举值定义;204是XML压缩数据,在本实施例中使用的是类似于XGrind的压缩格式,如204所示,T01表示编号为01的节点开始,A01表示编号为01的属性,其后的数据是字符串类型的属性值;A02之后的数值是直接以4个字节的形式写在XML压缩文件中的单精度浮点值,转换为十进制浮点数是1234.99;同样,T02表示编号为02的节点开始,A03之后的E01表示编号为01的枚举值,其后一行的“/”表示T02节点结束;T03之后的字符串数据是该XML节点的文本数据,其后两个“/”分别表示T03和T01对应的节点结束。
[0031] 注意,在本实施例所使用的XML压缩方法中,并没有对XML中的文本数据进行压缩,本实施例所描述的方法同样适用于对文本进行了压缩的情况。
[0032] 步骤205是XML解压缩过程,接受201、202、203、204作为输入数据,解压缩为206所示的XML数据,具体过程是:
[0033] 读取204中的T01,根据201查询到对应的标签名,并转换为字符串“”;
[0034] 读取204中的A01,根据202查询到对应的属性名,再读取其后的数据,转化为字符串“Name=″Some Product″”;同理,204中接下来的数据转换为字符串“Price=″1234.99″”,涉及到单精度浮点值到十进制表示方式的转换;
[0035] 204中的T02行、A01行转换方法同T01、A01行;
[0036] 读取204中的A03 E01,根据202查询到对应的属性名,根据203查询到对应的枚举值,再生成字符串“Country=″China″”;
[0037] 读取204中的/,转换为字符串“”,因为T02节点只包含属性值,因此该节点结尾字符串也可省略为“/>”;
[0038] 读取204中的T03行及其后的数据,并转换为带文本数据的节点“Product introduct ion...”;
[0039] 204中最后的两个/分别对应于T03和T01节点的结束,转换为“”和“”。
[0040] 步骤207使用现有的XML SAX读取方法,把206解析为208所示的SAX消息序列,在208中,所有消息中的值都是以字符串形式传递的。
[0041] 现有技术对SAX消息序列的处理方法如图2B所示。
[0042] 步骤211接收一条SAX消息,根据消息类型,分派到步骤212-214处理;步骤212、213、214中要对标签名、属性名做字符串匹配,以查找对应的数据处理逻辑;在步骤215中,把207中的字符串形式的值转化为所需数据类型,然后在步骤216中,具体的处理逻辑使用转换后的数据。
[0043] 由图2A和图2B的描述可以看出,现有的处理XML压缩数据的方法存在以下不足:步骤205中的数据格式转换、字符串操作带来的计算机资源占用;解压出的206对计算机存储资源的占用;212、213、214中字符串比较操作的计算机资源占用;215中字符串形式转到所需数据类型带来的计算机资源占用。
[0044] 针对现有方法的不足,下面以图3A、图3B描述本发明的XML压缩数据流式读取方法,并分析本发明对现有方法的改进。
[0045] 图3A为根据本发明的XML压缩数据流式读取方法的示意性流程图。
[0046] 如图3A所示,输入数据只有204所示的XML压缩数据,不需要201、202和203所示的字典;输出数据302类似于图2(现有方法)中208所示的SAX消息序列,但是对XML结构和值的表示都是采用混合数据类型,而不是208中的字符串形式。
[0047] 步骤301是XML压缩数据的流式读取过程,直接将204读取为302所示的消息序列,具体过程如下:
[0048] 204中的T01直接转换为一条startElement消息,标签名用一个类型为N、值为数字01的混合数据类型对象表示;同理,204中的A01和其后的数据转换为一条attribute消息,属性名表示成类型为N、值为01的混合数据类型对象,属性值表示成类型为S、值为字符串″Some Product″的混合数据类型对象;同理,204中的A02和其后的数据转换为一条attribute消息,其属性值表示成类型为F、值为单精度浮点数0x449A5FAE的混合数据类型对象,这里并不需要浮点数到字符串的数据类型转换;204中的枚举值E01直接转换为类型为E、值为01的混合数据类型对象;204中T03节点的文本数据转换为类型为S、值为该段字符串在计算机中的内存地址的混合数据类型对象;204中最后的两个/转换为两条endElement消息,标签名也同样是把数字转换为混合数据类型表示。
[0049] 从以上可看出,对于表示XML结构信息的标签名和属性名,不转换为字符串表示,而是转换为整数型混合数据类型对象,在整数型混合数据类型对象中,保留其原始压缩数据,即为原始数字编号。这样,通过相应的消息,直接把结构信息的类型和压缩后的结构信息数据提供给后续处理,后续处理不经过解析XML字符串,直接使用XML结构信息。
[0050] 对XML中的基本数据类型,如整数、浮点数、布尔、日期等数据类型,以及对经过XML压缩方法特殊处理过的数据类型,如枚举类型,在读取压缩过的原始数据后,不转换为字符串表示,而是直接转换为混合数据类型对象,在该混合数据类型对象中,保留其原始压缩数据,即为原始枚举值数字编号,后续处理不经过字符串解析,直接使用原始数据。
[0051] 对XML中的字符串类型数据,以及压缩方法没有做特殊处理的非预定义类型,在读取压缩过的原始数据后,解压为字符串表示,并转换为混合数据类型,后续处理自行解析字符串数据。
[0052] 图3B为根据本发明的混合数据类型消息序列处理方法的示意性流程图,如图3B所示:
[0053] 步骤311接收到一条混合数据类型消息,根据消息类型分派到步骤312、313、314处理;
[0054] 由于消息中标签名和属性名是以数字形式表示的,所以步骤312、313、314通过传送标签名和属性名的消息中的混合数据类型对象中的数字比较来查找对应的数据处理逻辑;
[0055] 步骤315通过传送数据的消息中的混合数据类型对象来判断该消息中的数据类型是否与所需数据类型相匹配,对于混合数据类型能直接表示的值,混合数据类型对象中保存的就是所需的数据,这一步不做任何处理,直接由步骤216使用数据;对于混合数据类型不能表示的值,存储在混合数据类型对象中的是原始的字符串值,需要将该字符串值转换为所述数据处理逻辑所需的数据类型;
[0056] 步骤216中查找到的处理逻辑使用转换的数据。
[0057] 由图3A和图3B的描述可以看出,本发明的XML压缩数据流式读取方法比现有方法的改进在于:省略了201、202和203所示的数据;省略了步骤205中的数据格式转换和字符串操作;省略了206中字符串的计算机存储资源占用;步骤212、213、214中的字符串比较改进为数字比较,节省了计算机资源占用;对大部分的数据类型,步骤315比步骤215能够节省数据类型转换带来的计算机资源占用。
[0058] 此外,由图3B和图2B的比较还可以看出,本发明的混合数据类型消息序列处理流程和现有的XML SAX消息序列处理流程类似,现有应用程序中的XML SAX消息处理流程易于修改为使用本发明的XML流式读取方法。
[0059] 相应地,本发明提供一种流式读取接口。该流式读取接口通过将XML压缩数据转换为混合数据类型对象来产生包含混合数据类型对象的消息序列,具体操作与上述流式读取方式相同,省略其描述。
[0060] 相比于公知的XML读取方法中的SAX接口,该流式读取接口对于XML压缩数据中的XML结构信息和XML数据的读取的改进之处在于:读取XML压缩数据中的结构信息后,不转换为字符串表示,直接把结构信息的类型和压缩后的结构信息数据提供给该接口的使用者,所述接口的使用者不经过解析XML字符串,直接使用XML结构信息;对XML中的基本数据类型,如整数、浮点数、布尔、日期等数据类型,以及对经过XML压缩方法特殊处理过的数据类型,如枚举类型,程序在读取压缩过的原始数据后,不转换为字符串表示,而是直接转换为混合数据类型,通过所述流式读取接口提供给该接口的使用者,所述接口的使用者不经过字符串解析,直接使用原始数据;对XML中的字符串类型数据,以及压缩方法没有做特殊处理的非预定义类型,程序在读取压缩过的原始数据后,解压为字符串表示,并转换为混合数据类型,通过所述流式读取接口提供给该接口的使用者,所述接口的使用者自行解析字符串数据。
[0061] 相应地,本发明提供一种用于快速处理XML压缩数据的装置。该装置包括:流式读取接口,通过将XML压缩数据转换为混合数据类型对象来产生包含混合数据类型对象的消息序列;消息序列处理单元,根据从流式读取接口读取的消息序列中的混合数据类型对象,查找对应的数据处理逻辑,将该混合数据类型对象中的混合数据转换为该数据处理逻辑所需的数据,并将转换的数据传送给该数据处理逻辑。流式读取接口和消息序列处理单元的操作与上述参照图3A和图3B所描述的方法步骤相同,省略其描述。
[0062] 从以上结合实施例的描述可看出,相比于现有的读取XML压缩数据的方法而言,通过所述混合数据类型,对XML结构信息和某些类型的数据,直接传递读取的原始压缩数据,节省了对计算机存储资源的占用。具体表现在以下几个方面:
[0063] 通过所述对XML结构信息的流式读取,节省了XML结构信息到字符串表示的转换,也节省了XML解析器对XML结构信息字符串的解析;同时,压缩后的结构信息表示一般是数值类型(编号),数值比较的计算量非常小,有利于XML解析器的高效实现。这种方法能节省读取XML压缩数据时的计算机时间资源占用;
[0064] 通过所述对XML压缩数据的流式读取,不需要先解压为XML的字符串表示,整个数据读取过程所占用的存储空间与XML数据大小无关,节省了读取XML压缩数据时的计算机存储资源占用;
[0065] 所述对XML中基本数据类型(比如,XPRESS中的xsd:float类型数据),以及对经过XML压缩方法特殊处理过的数据类型的读取过程,节省了多次数据表示方式转换对计算机资源的占用;
[0066] 所述XML压缩数据的流式读取方法,其接口使用方式与公知的XML读取方法中的SAX方法相似,可以方便与现有的使用SAX解析方法的程序兼容;在该接口之上,方便实现DOM、XPath等其他公知的XML读取方法接口。
[0067] 以上参考实施例描述了本发明。但是,本领域的技术人员应该理解,本发明不限于所公开的实施例,在不脱离本发明的基本原理的情况下,任何类似的修改、替换或变形都应包括在本发明的保护范围内,本发明的保护范围由权利要求限定。