一种可扩展标记语言xml文档的压缩、解压方法和装置

文档序号:1087373 发布日期:2020-10-20 浏览:5次 >En<

阅读说明:本技术 一种可扩展标记语言xml文档的压缩、解压方法和装置 (Method and device for compressing and decompressing extensible markup language (XML) document ) 是由 薛军超 于 2020-05-18 设计创作,主要内容包括:本发明提出了一种可扩展标记语言XML文档的压缩、解压方法和装置,包括以下步骤:接收并读取压缩前XML文档;分别对XML文档中的标记文字串和属性文字串进行使用次数统计;根据统计结果,将所述标记文字串和属性文字串分别进行排序;根据排序结果,将所述标记文字串或属性文字串与映射字符进行依次映射,并建立映射表;根据所述映射表,将XML文档中的所述标记文字串或属性文字串与对应的所述映射字符进行替换,获得压缩后XML文档。本发明通过对大量重复出现的、较长的标记和属性字符串进行单字节、最多双字节映射,从而达到压缩的目的,显著减少了标记及属性重复文字串的存储占用空间,因此达到了压缩的效果。(The invention provides a method and a device for compressing and decompressing an extensible markup language (XML) document, which comprise the following steps of: receiving and reading an XML document before compression; respectively carrying out use frequency statistics on the marked text strings and the attribute text strings in the XML documents; according to the statistical result, sorting the marked character strings and the attribute character strings respectively; according to the sorting result, mapping the marked character string or the attribute character string with the mapping character in sequence, and establishing a mapping table; and replacing the marked character string or the attribute character string in the XML document with the corresponding mapping character according to the mapping table to obtain the compressed XML document. The invention achieves the purpose of compression by mapping a large number of repeated and longer marks and attribute character strings with single byte and at most double bytes, and obviously reduces the storage occupation space of the repeated mark and attribute character strings, thereby achieving the effect of compression.)

一种可扩展标记语言XML文档的压缩、解压方法和装置

技术领域

本发明涉及计算机技术领域,具体而言,涉及一种可扩展标记语言XML文档的压缩、解压方法和装置。

背景技术

OFD,开放版式文档(Open Fixed-layout Document,缩写:OFD),是我国国家标准《GB/T 33190-2016电子文件存储与交换格式版式文档》定义的我国版式文档格式。OFD适应了我国信息化建设的需要,正在成为我国各行各业信息化应用的基础标准之一。所谓“版式文档”,是指它描述的页面内容具有固定的位置、大小、颜色等外观信息,确保页面内容在所有终端的显示效果完全固定、一致。

OFD是一个压缩包文件,采用ZIP压缩格式,文件后缀名是“.ofd”,因此从本质上讲OFD就是一个ZIP压缩包。依据标准定义,OFD包含了两种类型的数据文件:一种是以XML格式存储的文档及页面信息,它定义了版式文档的基础信息;另一种是以其它格式存储的资源信息,比如字体、图像、多媒体等格式的资源文件。

XML,可扩展标记语言(Extensible Markup Language,缩写:XML),是国际流行的通用数据描述语言格式,它具有简单、易于理解、易用应用等众多优点。OFD采用它作为版式文档的基础信息描述格式,可以说是OFD的核心数据格式。

XML的数据标记方式也存在不足的地方,在OFD当中,大量的XML文件采用相同的数据标记方式,这些数据标记都是可读的文字串,也就是说OFD包含了大量重复出现的文字串,这些文字串是因为XML标记语言的格式特性形成的,导致OFD文档的体积较大,在压缩或解压时,会消耗较大的系统内存和存储空间。

发明内容

鉴于上述问题,本发明提供了一种可扩展标记语言XML文档的压缩、解压方法和装置。

为解决上述技术问题,本发明采用的技术方案是:一种可扩展标记语言XML文档的压缩方法,包括以下步骤:接收并读取压缩前XML文档;分别对XML文档中的标记文字串和属性文字串进行使用次数统计;根据统计结果,将所述标记文字串和属性文字串分别进行排序;根据排序结果,将所述标记文字串或属性文字串与映射字符进行依次映射,并建立映射表;根据所述映射表,将XML文档中的所述标记文字串或属性文字串与对应的所述映射字符进行替换,获得压缩后XML文档。

作为优选方案,所述将标记文字串和属性文字串分别进行排序,具体包括:将所述标记文字串和属性文字串按照使用次数从高到低分别进行排序;对于使用次数相同的标记文字串或属性文字串,按照相应字符串的字符数量高低进行排序。

作为优选方案,所述使用次数统计采用计数器进行统计,所述标记文字串或属性文字串每出现一次,则在相应文字串数量上加一。

作为优选方案,所述映射表包括标记映射表和属性映射表,所述标记映射表和属性映射表以独立文件形式存储于压缩包中。

作为优选方案,所述映射字符为单字节字符,所述映射字符数量为115个,其符合XML标准定义且可作为标记名称使用。

作为优选方案,所述映射字符为双字节字符,所述双字节字符的第一个字节为下划线字符“_”,其第二个字节为单字节字符;或所述双字节字符的第一个字节和第二个字节均为单字节字符。

根据本发明的另一方面,提出了一种可扩展标记语言XML文档的解压方法,包括以下步骤:获取压缩包,所述压缩包包括压缩后XML文档和映射表;读取所述压缩包中压缩后XML文档和映射表;查找映射表中标记文字串或属性文字串与映射字符之间的映射关系;根据所述映射关系将所述标记字符串和属性文字串分别与各自对应的映射字符进行替换,获得压缩前XML文档。

根据本发明的又一方面,提出了一种可扩展标记语言XML文档的压缩装置,包括:接收读取模块,用于接收并读取压缩前XML文档;次数统计模块,用于分别对XML文档中的标记文字串和属性文字串进行使用次数统计;排序模块,根据统计结果,将所述标记文字串和属性文字串分别进行排序;映射模块,根据排序结果,将所述标记文字串或属性文字串与映射字符进行依次映射,并建立映射表;替换模块,根据所述映射表,将XML文档中的所述标记文字串或属性文字串与对应的所述映射字符进行替换,获得压缩后XML文档。

作为优选方案,所述映射表包括标记映射表和属性映射表,还包括存储模块,用于将所述标记映射表和属性映射表以独立文件形式存储于压缩包中。

根据本发明的又一方面,提出了一种可扩展标记语言XML文档的解压装置,包括:压缩包获取模块,用于获取压缩包,所述压缩包包括压缩后XML文档和映射表;压缩包读取模块,用于读取所述压缩包中压缩后XML文档和映射表;映射关系查找模块,查找映射表中标记文字串或属性文字串与映射字符之间的映射关系;映射字符替换模块,用于根据所述映射关系将所述标记字符串和属性文字串分别与各自对应的映射字符进行替换,获得压缩前XML文档。

与现有技术相比,本发明的有益效果包括:本发明通过对大量重复出现的、较长的标记和属性字符串进行单字节、最多双字节映射,从而达到压缩的目的,显著减少了标记及属性重复文字串的存储占用空间,因此达到了压缩的效果;对标记和属性文字串进行统计并排序后,再进行映射替换,出现次数高的字符串优先映射单字符,可以进一步降低存储占用空间。

附图说明

参照附图来说明本发明的公开内容。应当了解,附图仅仅用于说明目的,而并非意在对本发明的保护范围构成限制。在附图中,相同的附图标记用于指代相同的部件。其中:

图1为本发明实施例可扩展标记语言XML文档的压缩方法流程图;

图2为本发明实施例可扩展标记语言XML文档的压缩装置的结构示意图;

图3为本发明实施例可扩展标记语言XML文档的解压方法流程图;

图4为本发明实施例可扩展标记语言XML文档的解压装置的结构示意图。

具体实施方式

容易理解,根据本发明的技术方案,在不变更本发明实质精神下,本领域的一般技术人员可以提出可相互替换的多种结构方式以及实现方式。因此,以下具体实施方式以及附图仅是对本发明的技术方案的示例性说明,而不应当视为本发明的全部或者视为对本发明技术方案的限定或限制。

根据本发明的一实施方式结合图1示出。一种可扩展标记语言XML文档的压缩方法,包括以下步骤:

S101:接收并读取压缩前XML文档,XML文档包括若干XML文件,每个XML文件均包括标记文字串和属性文字串。

S102:分别对XML文档中的标记文字串和属性文字串进行使用次数统计。具体为:采用计数器对XML文件中标记文字串或属性文字串的使用次数进行统计,标记文字串或属性文字串每出现一次,则在相应文字串数量上加一,直到所有XML文件全部统计完。

S103:根据统计结果,将标记文字串和属性文字串分别进行排序,排序次序按照使用次数从高到低依次进行,对于使用次数相同的标记文字串或属性文字串,按照相应字符串的字符数量高低进行排序,排序次序可按照升序或降序进行。

S104:根据排序结果,将标记文字串或属性文字串与映射字符进行依次映射,并建立映射表,映射表包括标记映射表和属性映射表,标记映射表和属性映射表以独立文件形式存储于压缩包中。

本实施例中,映射字符包括单字节字符和双字节字符,符合XML标准定义且可作为标记名称使用的单字节映射字符有115个,具体如表1所示。

ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcde

fghijklmnopqrstuvwxyz

Figure BDA0002495975800000041

Figure BDA0002495975800000042

Figure BDA0002495975800000043

表1

当标记字符串或属性字符串的数量不超过115个时,可依据表1中的单字节映射字符逐一映射,这样可将XML文档中多字节的标记字符串或属性字符串全部映射为单字节映射字符。

当标记字符串或属性字符串的数量超过115个时,前115个标记字符串或属性字符串仍按照表1逐一映射,对于第115个之后的字符串映射为双字节字符,该双字节字符中第一个字节固定为下划线字符“_”,第二个字节仍为表1中的单字节映射字符,这样最多可以映射230个标记字符串或属性字符串。

特殊的,当XML文档中标记字符串或属性字符串数量超过230个时,双字节字符的第二个字节为表1中顺序的单字节映射字符,第一个字节可以为任意单字节映射字符,从而总共可以有115+115*115=13340种映射,可以满足绝大多数XML文档的映射需求。

S105:根据映射表,将XML文档中的标记文字串或属性文字串与对应的映射字符进行替换保存,获得压缩后XML文档。

下面以包含XML文档的OFD文件为例,对一种可扩展标记语言XML文档的压缩方法做进一步说明。

在OFD文件中,符合OFD标准的XML标记字符串如表2所示,共147个。

Figure BDA0002495975800000051

表2

在OFD文件中,符合OFD标准的XML属性字符串如表3所示,共126个。

Figure BDA0002495975800000052

表3

本实施例中,在分别对XML文档中的标记文字串和属性文字串进行使用次数统计后,根据统计结果,按使用次数从高到低,将标记文字串和属性文字串分别进行排序,并根据排序结果,将标记文字串或属性文字串与映射字符进行依次映射,并建立映射表,同时将映射表以独立文件形式(比如“fm.dat”)保存到OFD压缩包中,映射表包括标记映射表和属性映射表,如表4所示。

表4

根据映射表,将XML文档中的标记文字串或属性文字串与对应的映射字符进行替换,获得压缩后XML文档。即将表4中的映射字符“A”替代XML文档中的标记字符串“OFD”。

如图2所示,本发明还公开了一种可扩展标记语言XML文档的压缩装置,该装置包括:

接收读取模块110,用于接收并读取压缩前XML文档。

次数统计模块120,用于分别对XML文档中的标记文字串和属性文字串进行使用次数统计。

排序模块130,根据统计结果,将标记文字串和属性文字串分别进行排序。

映射模块140,根据排序结果,将标记文字串或属性文字串与映射字符进行依次映射,并建立映射表,该映射表包括标记映射表和属性映射表。

替换模块150,根据映射表,将XML文档中的标记文字串或属性文字串与对应的映射字符进行替换,获得压缩后XML文档。

进一步的,还包括存储模块160,该存储模块160用于将标记映射表和属性映射表以独立文件形式存储于压缩包中。

如图3所示,本发明还公开了一种可扩展标记语言XML文档的解压方法,包括以下步骤:

S201:获取压缩包,压缩包包括压缩后XML文档和映射表。

S202:读取压缩包中压缩后XML文档和映射表,先从压缩包中读取映射表文件,如上述“fm.dat”文件,如果该文件存在,则执行映射压缩,进行下一步;否则,按常规步骤解压,后续步骤无需执行。

S203:查找映射表中标记文字串或属性文字串与映射字符之间的映射关系。

S204:读取每一个XML文件,根据映射关系将标记字符串和属性文字串分别与各自对应的映射字符进行替换,获得压缩前XML文档,后续按常规步骤解压即可。

如图4所示,本发明还公开了一种可扩展标记语言XML文档的压缩装置,该装置包括:

压缩包获取模块210,用于获取压缩包,压缩包包括压缩后XML文档和映射表。

压缩包读取模块220,用于读取压缩包中压缩后XML文档和映射表。

映射关系查找模块230,查找映射表中标记文字串或属性文字串与映射字符之间的映射关系。

映射字符替换模块240,用于根据映射关系将标记字符串和属性文字串分别与各自对应的映射字符进行替换,获得压缩前XML文档。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

易理解,本发明提出的一种可扩展标记语言XML文档的压缩、解压方法和装置,不仅限于对OFD文件中XML文档进行压缩、解压,还可以扩展到诸如OFD、DOCX、XLSX、PPTX等这些包含大量XML文档的压缩包文件当中,还可以扩展到所有基于XML、HTML、XHTML格式或其它类似的标记语言格式。

综上所述,本发明提出的一种可扩展标记语言XML文档的压缩、解压方法和装置,通过对大量重复出现的、较长的标记和属性字符串进行单字节、最多双字节映射替换,显著减少了存储占用空间,从而达到压缩的目的,且对标记和属性文字串进行统计并排序后,再进行映射替换,出现次数高的字符串优先映射单字符,可以进一步降低存储占用空间。经过测试检测,对于OFD文件,压缩后的存储空间减少20%到50%,对于某些特殊的文件压缩效果还会更明显。

本发明的技术范围不仅仅局限于上述说明中的内容,本领域技术人员可以在不脱离本发明技术思想的前提下,对上述实施例进行多种变形和修改,而这些变形和修改均应当属于本发明的保护范围内。

11页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:可控的基于风格的文本转换

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!