CN112487249B - 一种可扩展标记语言xml文档压缩、解压方法及装置 - Google Patents
一种可扩展标记语言xml文档压缩、解压方法及装置 Download PDFInfo
- Publication number
- CN112487249B CN112487249B CN202011361707.7A CN202011361707A CN112487249B CN 112487249 B CN112487249 B CN 112487249B CN 202011361707 A CN202011361707 A CN 202011361707A CN 112487249 B CN112487249 B CN 112487249B
- Authority
- CN
- China
- Prior art keywords
- attribute
- target
- range
- target element
- buffer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000007906 compression Methods 0.000 title claims abstract description 94
- 230000006835 compression Effects 0.000 title claims abstract description 93
- 238000000034 method Methods 0.000 title claims abstract description 35
- 230000006837 decompression Effects 0.000 title claims description 56
- 239000000872 buffer Substances 0.000 claims abstract description 163
- 238000001514 detection method Methods 0.000 claims description 12
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Document Processing Apparatus (AREA)
Abstract
一种可扩展标记语言XML文档压缩、解压方法及装置,压缩包括以下步骤:A、读入未压缩的XML文档数据:B、设置压缩前置条件:设置范围元素匹配条件和目标元素匹配条件;C、匹配范围元素:遍历XML文档,找到所有满足范围元素匹配条件的元素,即为范围元素;然后将范围元素下所有元素的类属性缓存器初始化为空;D、匹配目标元素,并进行目标元素压缩操作;E、更新元素类属性缓存器。本发明采用解析的前后位置关系利用属性变更状态,只保留与前一个同类型元素不相同属性的方法实现XML文档压缩。XML文档中同类型元素越多,元素属性越多,压缩率越高。实际应用在文档内容领域可以达到30%~75%压缩率,可大大节约文档空间。
Description
技术领域
本发明属于文档处理技术领域,特别涉及一种可扩展标记语言XML文档压缩、解压方法及压缩和解压装置。
背景技术
XML,可扩展标记语言(Extensible Markup Language,缩写:XML),是国际流行的通用数据描述语言格式。
基于XML的新一代电子病历数据格式具有全结构化和易读易解析的特点,同时又带来了数据结构嵌套复杂,需要保存的内容格式、样式、配置等信息过多,导致XML文件过大的问题。不利于病历数据的传输、共享、解析、数据提取。
因此,有必要发明一种不破坏全结构化病历文档结构、不影响病历文档显示效果的XML文档的压缩、解压方法和装置。
发明内容
本发明的目的在于克服现有技术的不足,提供一种本发明采用解析的前后位置关系利用属性变更状态,只保留与前一个同类型元素不相同属性的方法实现XML文档压缩。XML文档中同类型元素越多,元素属性越多,压缩率越高。实际应用在文档内容领域可以达到30%~75%压缩率,可大大节约文档空间的可扩展标记语言XML文档压缩和解压方法,并提供对应的压缩及解压装置。
本发明的目的是通过以下技术方案来实现的:
一种可扩展标记语言XML文档压缩方法,包括以下步骤:
A、读入未压缩的XML文档数据:
B、设置压缩前置条件:包括范围元素匹配条件和目标元素匹配条件;
C、匹配范围元素:遍历XML文档,找到所有满足范围元素匹配条件的元素,即为范围元素;然后将范围元素下所有元素的类属性缓存器初始化为空;
D、匹配目标元素,并进行目标元素压缩操作;
E、更新元素类属性缓存器。
进一步地,所述范围元素定义为压缩规则作用范围的元素;
范围元素匹配条件:根据元素名、属性名或二者的组合条件作为匹配范围元素的条件;
目标元素匹配条件:根据元素名、属性名或二者的组合条件作为匹配目标元素的条件。
进一步地,所述步骤D具体实现方法为:
D1、遍历满足范围元素匹配条件的元素,取得满足目标元素匹配条件的子元素,将其作为需要压缩的目标元素;
D2、将目标元素按照如下规则进行压缩:
(1)当目标元素没有对应的元素类属性缓存器时,则将当前目标元素所有属性保存到XML压缩文档中;
(2)当目标元素的具体属性值不同于其元素类属性缓存器对应属性的属性值时,将目标元素属性保存到XML压缩文档中,否则目标元素的此属性不需要保存到XML压缩文档中;
(3)将存在于目标元素但不存在于其元素类属性缓存器中的属性,保存到XML压缩文档中。
进一步地,所述步骤E中,压缩状态元素类属性缓存器更新算法规则如下:
(1)如果当前目标元素没有对应的元素类属性缓存器,则使用当前目标元素所有属性新建其元素类属性缓存器;
(2)将当前目标元素与其元素类属性缓存器比较,将属性值不一样的属性从目标元素更新到元素类属性缓存器;
(3)将存在于目标元素但不存在于其元素类属性缓存器中的属性添加到元素类属性缓存器中。
本发明还提供一种可扩展标记语言XML文档解压方法,包括以下步骤:
F、读入XML压缩文档数据;
G、设置解压前置条件:包括范围元素匹配条件和目标元素匹配条件;
范围元素匹配条件:根据元素名、属性名或二者的组合条件作为匹配范围元素的条件;
目标元素匹配条件:根据元素名、属性名或二者的组合条件作为匹配目标元素的条件;
H、匹配范围元素:遍历XML文档,找到所有满足范围元素匹配条件的元素,即为范围元素;然后将范围元素下所有元素的类属性缓存器被初始化为空;
I、匹配目标元素,并进行目标元素解压操作;
J、更新元素类属性缓存器。
进一步地,所述步骤I包括以下子步骤:
I1、遍历范围元素,取得满足目标元素匹配条件的子元素,即为需要解压的目标元素;
I2、通过如下目标元素解压算法从压缩XML文档中恢复目标元素所有的属性:
当前目标元素没有其元素类属性缓存器时,该目标元素不需要解压操作;
将目标元素已有的所有属性与其元素类属性缓存器比较,将只存在于其元素类属性缓存器中的属性恢复到目标元素中,从而使该目标元素恢复了该类元素所有的属性。
进一步地,所述步骤J中,解压状态元素类属性缓存器更新算法规则如下:
(1)如果当前目标元素没有对应的元素类属性缓存器,则使用当前目标元素所有属性新建其元素类属性缓存器;
(2)将当前目标元素属性与其元素类属性缓存器比较,将属性值不一样的属性从目标元素更新到其元素类属性缓存器;
(3)将存在于目标元素但不存在于其元素类属性缓存器中的属性更新到其元素类属性缓存器。
本发明的一种可扩展标记语言XML文档的压缩装置,包括以下模块:
接收读取模块:用于接收并读取需要压缩的XML文档;
压缩前置条件设置模块:包括范围元素匹配条件设置子模块和目标元素匹配条件设置子模块;
所述范围元素匹配条件设置子模块,用于从XML文档读取范围元素匹配条件信息或由外部应用通过本模块写入范围元素匹配条件信息;并根据范围元素匹配条件在XML根元素范围内查找到所有的范围元素,提供给压缩装置其它模块使用;
所述目标元素匹配条件设置子模块,用于从XML文档读取范围元素匹配条件信息或由外部应用通过本模块写入目标元素匹配条件信息;并根据目标元素匹配条件在其范围元素内查找到所有的目标元素,提供给压缩装置其它模块使用;
属性差异检测模块,用于将目标元素属性与其元素类属性缓存器进行属性值比较,取得属性值不同的属性;将目标元素属性与其元素类属性缓存器进行属性是否存在判断,取得存在于目标元素但不存在于其元素类属性缓存器中的属性;
元素压缩模块,用于将目标元素中经过属性差异检测模块得到的差异属性保存到压缩后XML文档中,目标元素其余属性将被丢弃,从而实现了元素压缩;
元素属性缓存器管理模块,用于记录指定元素类上一个元素节点具有的所有属性信息;如果当前目标元素不存在其元素类属性缓存器,则使用该目标元素所有属性新建其元素类属性缓存器;当前目标元素与其元素类属性缓存器比较,将属性值不一样的属性从目标元素更新到元素类属性缓存器;将存在于目标元素但不存在于其元素类属性缓存器中的属性添加到元素类属性缓存器中;
XML压缩文档生成模块,用于组织压缩后的XML文档,并以文件或数据流的形式对外输出压缩后的XML文档。
一种可扩展标记语言XML文档的解压装置,包括以下模块:
接收读取模块,用于接收并读取需要压缩的XML文档;
解压前置条件设置模块,包括范围元素匹配条件设置子模块和目标元素匹配条件设置子模块;
所述范围元素匹配条件设置子模块用于从XML文档读取范围元素匹配条件信息或由外部应用通过本模块写入范围元素匹配条件信息;并根据范围元素匹配条件在XML根元素范围内查找到所有的范围元素,提供给压缩装置其它模块使用;
所述目标元素匹配条件设置子模块用于从XML文档读取范围元素匹配条件信息或由外部应用通过本模块写入目标元素匹配条件信息;并根据目标元素匹配条件在其范围元素内查找到所有的目标元素,提供给压缩装置其它模块使用;
属性是否存在检测模块,用于将目标元素属性与其元素类属性缓存器进行属性是否存在判断,取得存在于其元素类属性缓存器但不存在于目标元素中的属性;
元素解压模块,用于将属性是否存在检测模块得到的属性从元素类属性缓存器添加到目标元素中,使得目标元素恢复了该元素类的所有属性,从而实现了元素解压;
元素属性缓存器管理模块,用于记录指定元素类上一个元素节点具有的所有属性信息;如果当前目标元素不存在其元素类属性缓存器,则使用该目标元素所有属性新建其元素类属性缓存器;当前目标元素与其元素类属性缓存器比较,将属性值不一样的属性从目标元素更新到元素类属性缓存器;将存在于目标元素但不存在于其元素类属性缓存器中的属性添加到元素类属性缓存器中;
XML解压文档生成模块,用于组织解压后的XML文档,并以文件或数据流的形式对外输出解压后的XML文档。
本发明的有益效果是:本发明区别于对元素名或属性名进行映射替换以压缩XML的方法,而是采用解析的前后位置关系利用属性变更状态,只保留与前一个同类型元素不相同属性的方法实现XML文档压缩。XML文档中同类型元素越多,元素属性越多,压缩率越高。实际应用在文档内容领域可以达到30%~75%压缩率,可大大节约文档空间。尤其是视图文档表示领域,属性大量的被用来修饰文字段落内容的格式、样式、配置等,属性的占比甚至会超过文字内容的占比,使用本发明的压缩方法和装置可大大节约文档空间。本发明提出的可扩展标记语言XML文档的压缩、解压方法和装置,不仅限于对XML文档进行压缩、解压,还可以扩展到所有基于XML、HTML格式或其它类似的标记语言格式文档。
附图说明
图1为本发明的可扩展标记语言XML文档压缩方法的流程图;
图2为本发明的可扩展标记语言XML文档解压方法的流程图;
图3为本发明的可扩展标记语言XML文档压缩装置的模块图;
图4为本发明的可扩展标记语言XML文档解压装置的模块图。
具体实施方式
本发明使用的术语定义如下:
范围元素:设定的压缩或解压规则作用范围元素,迭代遍历该范围元素内的所有“目标元素”对其实施压缩或解压操作。
目标元素:被压缩或解压的元素。
元素类:相同元素名或标签名的元素认为是同一类元素,称为某元素类;比如所有标签名为Paragraph的元素,称为Paragraph元素类。
元素类属性缓存器:指定元素类的属性缓存器用于缓存该元素类的当前所有属性及其属性值。
下面结合附图和具体实施例进一步说明本发明的技术方案。
如图1所示,本发明的一种可扩展标记语言XML文档压缩方法,采用的技术方案是:本发明区别于对元素名或属性名进行映射替换以压缩XML的方法,而是采用解析的前后位置关系利用属性变更状态,只保留与前一个同类型元素不相同属性的方法实现压缩XML文档。具体包括以下步骤:
A、读入未压缩的XML文档数据:
本实施例中,一段用于表示全结构化电子病历的未压缩XML文档内容如下:
B、设置压缩前置条件:包括范围元素匹配条件和目标元素匹配条件;
所述范围元素定义为压缩规则作用范围的元素;
范围元素匹配条件:根据元素名、属性名或二者的组合条件作为匹配范围元素的条件;
目标元素匹配条件:根据元素名、属性名或二者的组合条件作为匹配目标元素的条件。
C、匹配范围元素:遍历XML文档,找到元素名为Main的所有元素,将其作为范围元素,在Main范围元素内为Paragraph元素建立Paragraph元素类属性缓存器,其初始值为空;为Format元素建立Format元素类属性缓存器,其初始值为空;进入范围元素时初始化元素类属性缓存器为空,在范围元素内第一个目标元素的属性不会被压缩,而是会作为初始元素类属性值被全部保留。
D、匹配目标元素,并进行目标元素压缩操作;
具体实现方法为:
D1、遍历满足范围元素匹配条件的元素,取得满足目标元素匹配条件的子元素,将其作为需要压缩的目标元素;
D2、将目标元素按照如下规则进行压缩:
(1)当目标元素没有对应的元素类属性缓存器时,则将当前目标元素所有属性保存到XML压缩文档中;
(2)当目标元素的具体属性值不同于其元素类属性缓存器对应属性的属性值时,将目标元素属性保存到XML压缩文档中,否则目标元素的此属性不需要保存到XML压缩文档中;
(3)将存在于目标元素但不存在于其元素类属性缓存器中的属性,保存到XML压缩文档中。
E、更新元素类属性缓存器,压缩状态元素类属性缓存器更新算法规则如下:
(1)如果当前目标元素没有对应的元素类属性缓存器,则使用当前目标元素所有属性新建其元素类属性缓存器;
(2)将当前目标元素与其元素类属性缓存器比较,将属性值不一样的属性从目标元素更新到元素类属性缓存器;
(3)将存在于目标元素但不存在于其元素类属性缓存器中的属性添加到元素类属性缓存器中。
本实施例文档的具体压缩过程为:
(1)将当前目标元素(第一个Paragraph元素)与Paragraph元素类属性缓存器比对;应用目标元素压缩算法规则,得到当前目标元素压缩后数据如下:
<Paragraph id=""name=""cfg="0"x-cfg="0"left-indent="0.00"right-indent="0.00"space-before="0.00"space-after="0.00"specificindent-value="0.00"linespace-value="0.00"level="0"/>
更新后Paragraph元素类属性缓存器中的属性值表示表一所示。
表一
(2)匹配到第一个Format目标元素,并进行目标元素压缩操作。将当前目标元素(第一个Format元素)与Format元素类属性缓存器比对;应用目标元素压缩算法规则,得到当前目标元素压缩后数据如下:
<Format cfg="0"fontname="宋体"size="16"color="00000000"back-color="00000000"/>
更新后Format元素类属性缓存器中的属性值表示如表二所示。
表二
(3)匹配到第二个Format目标元素,并进行目标元素压缩操作。将当前目标元素(第二个Format元素)与Format元素类属性缓存器比对,应用目标元素压缩算法规则,得到当前目标元素压缩后数据如下:
<Format cfg="1"/>。
应用压缩状态元素类属性缓存器更新算法规则,更新后Format元素类属性缓存器中的属性值表示如表三所示。
表三
(4)匹配到第二个Paragraph目标元素,并进行目标元素压缩操作,将当前目标元素(第二个Paragraph元素)与Paragraph元素类属性缓存器比对;应用目标元素压缩算法规则;得到当前目标元素压缩后数据如下:
<Paragraph x-cfg="10"specificindent-value="2.00"/>
应用压缩状态元素类属性缓存器更新算法规则,更新后Paragraph元素类属性缓存器中的属性值表示如表四所示。
表四
(5)继续遍历,匹配到第三个Format目标元素,并进行目标元素压缩操作。将当前目标元素(第三个Format元素)与Format元素类属性缓存器比较;应用目标元素压缩算法规则,得到当前目标元素压缩后数据如下:
<Format cfg="0"/>
应用压缩状态元素类属性缓存器更新算法规则,更新后Format元素类属性缓存器中的属性值表示如表五所示。
表五
(6)继续遍历,匹配到第三个Paragraph目标元素,并进行目标元素压缩操作
将当前目标元素(第三个Paragraph元素)与Paragraph元素类属性缓存器比对;应用目标元素压缩算法规则;得到当前目标元素压缩后数据如下:
<Paragraph/>
应用压缩状态元素类属性缓存器更新算法规则,当前场景Paragraph元素类属性缓存器的值不需要更新。
(7)继续遍历,匹配到第四个Format目标元素,并进行目标元素压缩操作。将当前目标元素(第四个Format元素)与Format元素类属性缓存器比较,应用目标元素压缩算法规则,得到当前目标元素压缩后数据如下:<Format/>
应用压缩状态元素类属性缓存器更新算法规则,当前场景不需要更新Format目标元素属性缓存器。
整个XML文档遍历结束,得到XML压缩文档如下;
压缩的直观过程表示如表六和表七所示。
表六
表七
示例压缩文档达到了48%的压缩率。XML文档元素属性的所占比例越高,压缩率越高,实际可以达到30%~75%压缩率。
如图2所示,本发明的一种可扩展标记语言XML文档解压方法,包括以下步骤:
F、读入XML压缩文档数据;
一段用于表示全结构化电子病历的已压缩XML文档内容如下
G、设置解压前置条件:包括范围元素匹配条件和目标元素匹配条件;
范围元素匹配条件:根据元素名、属性名或二者的组合条件作为匹配范围元素的条件;
目标元素匹配条件:根据元素名、属性名或二者的组合条件作为匹配目标元素的条件;
H、匹配范围元素:遍历XML文档,找到所有满足范围元素匹配条件的元素,即为范围元素;然后将范围元素下所有元素的类属性缓存器被初始化为空;
I、匹配目标元素,并进行目标元素解压操作;包括以下子步骤:
I1、遍历范围元素,取得满足目标元素匹配条件的子元素,即为需要解压的目标元素;I2、通过如下目标元素解压算法从压缩XML文档中恢复目标元素所有的属性:
当前目标元素没有其元素类属性缓存器时,该目标元素不需要解压操作;
将目标元素已有的所有属性与其元素类属性缓存器比较,将只存在于其元素类属性缓存器中的属性恢复到目标元素中,从而使该目标元素恢复了该类元素所有的属性。
J、更新元素类属性缓存器,解压状态元素类属性缓存器更新算法规则如下:
(1)如果当前目标元素没有对应的元素类属性缓存器,则使用当前目标元素所有属性新建其元素类属性缓存器;
(2)将当前目标元素属性与其元素类属性缓存器比较,将属性值不一样的属性从目标元素更新到其元素类属性缓存器;
(3)将存在于目标元素但不存在于其元素类属性缓存器中的属性更新到其元素类属性缓存器。
本实施例的压缩文档解压具体过程为:
(1)匹配到第一个Paragraph目标元素,进行目标元素解压操作。将当前目标元素(第一个Paragraph元素)与Paragraph元素类属性缓存器比较,应用目标元素解压算法规则,得到当前目标元素解压后数据如下:
<Paragraph id=""name=""cfg="0"x-cfg="0"left-indent="0.00"right-indent="0.00"space-before="0.00"space-after="0.00"specificindent-value="0.00"linespace-value="0.00"level="0"/>
应用解压状态元素类属性缓存器更新算法规则,更新后Paragraph元素类属性缓存器中的属性值表示如表八所示。
表八
(2)匹配到第一个Format目标元素,进行目标元素解压操作。将当前Format目标元素(第一个Format元素)与Format元素类属性缓存器比较,应用目标元素解压算法规则,得到当前目标元素解压后数据如下:
<Format cfg="0"fontname="宋体"size="16"color="00000000"back-color="00000000"/>
应用解压状态元素类属性缓存器更新算法规则,更新后Format元素类属性缓存器表示如表九所示。
表九
(3)匹配到第二个Format目标元素,进行目标元素解压操作。将当前Format目标元素(第二个Format元素)与Format元素类属性缓存器比较,应用目标元素解压算法规则,得到当前目标元素解压后数据如下:
<Format cfg="1"fontname="宋体"size="16"color="00000000"back-color="00000000"/>
应用解压状态元素类属性缓存器更新算法规则,更新后Format元素类属性缓存器表示如表十所示。
表十
(4)匹配到第二个Paragraph目标元素,进行目标元素解压操作。将当前Paragraph目标元素(第二个Paragraph元素)与Paragraph元素类属性缓存器比较,应用目标元素解压算法规则,得到当前目标元素解压后数据如下:
<Paragraph id=""name=""cfg="0"x-cfg="10"left-indent="0.00"right-indent="0.00"space-before="0.00"space-after="0.00"specificindent-value="2.00"linespace-value="0.00"level="0"/>
应用解压状态元素类属性缓存器更新算法规则,更新后的Paragraph元素类属性缓存器状态如表十一所示。
表十一
(5)继续遍历,匹配到第三个Format目标元素,进行目标元素解压操作
将当前Format目标元素(第三个Format元素)与Format元素类属性缓存器比较,应用目标元素解压算法规则,得到当前目标元素解压后数据如下:
<Format cfg="0"fontname="宋体"size="16"color="00000000"back-color="00000000"/>
应用解压状态元素类属性缓存器更新算法规则,更新后Format元素类属性缓存器表示如表十二所示。
表十二
(6)继续遍历,匹配到第三个Paragraph目标元素,进行目标元素解压操作。将当前Paragraph目标元素(第三个Paragraph元素)与Paragraph元素类属性缓存器比较,应用目标元素解压算法规则,得到当前目标元素解压后数据如下:
<Paragraph id=""name=""cfg="0"x-cfg="10"left-indent="0.00"right-indent="0.00"space-before="0.00"space-after="0.00"specificindent-value="2.00"linespace-value="0.00"level="0"/>
应用解压状态元素类属性缓存器更新算法规则,当前场景Paragraph元素类属性缓存器不需要更新。
(7)继续遍历,匹配到第四个Format目标元素,进行目标元素解压操作。将当前Format目标元素(第三个Format元素)与Format元素类属性缓存器比较,应用目标元素解压算法规则,得到当前目标元素解压后数据如下:
<Format cfg="0"fontname="宋体"size="16"color="00000000"back-color="00000000"/>
应用解压状态元素类属性缓存器更新算法规则,当前场景Format元素类属性缓存器不需要更新。
整个XML文档遍历结束,得到解压后的XML文档;
如图3所示,本发明的一种可扩展标记语言XML文档的压缩装置,包括以下模块:
接收读取模块:用于接收并读取需要压缩的XML文档;
压缩前置条件设置模块:包括范围元素匹配条件设置子模块和目标元素匹配条件设置子模块;
所述范围元素匹配条件设置子模块,用于从XML文档读取范围元素匹配条件信息或由外部应用通过本模块写入范围元素匹配条件信息;并根据范围元素匹配条件在XML根元素范围内查找到所有的范围元素,提供给压缩装置其它模块使用;
所述目标元素匹配条件设置子模块,用于从XML文档读取范围元素匹配条件信息或由外部应用通过本模块写入目标元素匹配条件信息;并根据目标元素匹配条件在其范围元素内查找到所有的目标元素,提供给压缩装置其它模块使用;
属性差异检测模块,用于将目标元素属性与其元素类属性缓存器进行属性值比较,取得属性值不同的属性;将目标元素属性与其元素类属性缓存器进行属性是否存在判断,取得存在于目标元素但不存在于其元素类属性缓存器中的属性;
元素压缩模块,用于将目标元素中经过属性差异检测模块得到的差异属性保存到压缩后XML文档中,目标元素其余属性将被丢弃,从而实现了元素压缩;
元素属性缓存器管理模块,用于记录指定元素类上一个元素节点具有的所有属性信息;如果当前目标元素不存在其元素类属性缓存器,则使用该目标元素所有属性新建其元素类属性缓存器;当前目标元素与其元素类属性缓存器比较,将属性值不一样的属性从目标元素更新到元素类属性缓存器;将存在于目标元素但不存在于其元素类属性缓存器中的属性添加到元素类属性缓存器中;
XML压缩文档生成模块,用于组织压缩后的XML文档,并以文件或数据流的形式对外输出压缩后的XML文档。
如图4所示,本发明的一种可扩展标记语言XML文档的解压装置,其特征在于,包括以下模块:
接收读取模块,用于接收并读取需要压缩的XML文档;
解压前置条件设置模块,包括范围元素匹配条件设置子模块和目标元素匹配条件设置子模块;
所述范围元素匹配条件设置子模块用于从XML文档读取范围元素匹配条件信息或由外部应用通过本模块写入范围元素匹配条件信息;并根据范围元素匹配条件在XML根元素范围内查找到所有的范围元素,提供给压缩装置其它模块使用;
所述目标元素匹配条件设置子模块用于从XML文档读取范围元素匹配条件信息或由外部应用通过本模块写入目标元素匹配条件信息;并根据目标元素匹配条件在其范围元素内查找到所有的目标元素,提供给压缩装置其它模块使用;
属性是否存在检测模块,用于将目标元素属性与其元素类属性缓存器进行属性是否存在判断,取得存在于其元素类属性缓存器但不存在于目标元素中的属性;
元素解压模块,用于将属性是否存在检测模块得到的属性从元素类属性缓存器添加到目标元素中,使得目标元素恢复了该元素类的所有属性,从而实现了元素解压;
元素属性缓存器管理模块,用于记录指定元素类上一个元素节点具有的所有属性信息;如果当前目标元素不存在其元素类属性缓存器,则使用该目标元素所有属性新建其元素类属性缓存器;当前目标元素与其元素类属性缓存器比较,将属性值不一样的属性从目标元素更新到元素类属性缓存器;将存在于目标元素但不存在于其元素类属性缓存器中的属性添加到元素类属性缓存器中;
XML解压文档生成模块,用于组织解压后的XML文档,并以文件或数据流的形式对外输出解压后的XML文档。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
Claims (7)
1.一种可扩展标记语言XML文档压缩方法,其特征在于,包括以下步骤:
A、读入未压缩的XML文档数据:
B、设置压缩前置条件:包括范围元素匹配条件和目标元素匹配条件;
C、匹配范围元素:遍历XML文档,找到所有满足范围元素匹配条件的元素,即为范围元素;然后将范围元素下所有元素的类属性缓存器初始化为空;
D、匹配目标元素,并进行目标元素压缩操作;具体实现方法为:
D1、遍历满足范围元素匹配条件的元素,取得满足目标元素匹配条件的子元素,将其作为需要压缩的目标元素;
D2、将目标元素按照如下规则进行压缩:
(1)当目标元素没有对应的元素类属性缓存器时,则将当前目标元素所有属性保存到XML压缩文档中;
(2)当目标元素的具体属性值不同于其元素类属性缓存器对应属性的属性值时,将目标元素属性保存到XML压缩文档中,否则目标元素的此属性不需要保存到XML压缩文档中;
(3)将存在于目标元素但不存在于其元素类属性缓存器中的属性,保存到XML压缩文档中;
E、更新元素类属性缓存器。
2.根据权利要求1所述的一种可扩展标记语言XML文档压缩方法,其特征在于,所述范围元素定义为压缩规则作用范围的元素;
范围元素匹配条件:根据元素名、属性名或二者的组合条件作为匹配范围元素的条件;
目标元素匹配条件:根据元素名、属性名或二者的组合条件作为匹配目标元素的条件。
3.根据权利要求1所述的一种可扩展标记语言XML文档压缩方法,其特征在于,所述步骤E中,压缩状态元素类属性缓存器更新算法规则如下:
(1)如果当前目标元素没有对应的元素类属性缓存器,则使用当前目标元素所有属性新建其元素类属性缓存器;
(2)将当前目标元素与其元素类属性缓存器比较,将属性值不一样的属性从目标元素更新到元素类属性缓存器;
(3)将存在于目标元素但不存在于其元素类属性缓存器中的属性添加到元素类属性缓存器中。
4.一种可扩展标记语言XML文档解压方法,其特征在于,包括以下步骤:
F、读入XML压缩文档数据;
G、设置解压前置条件:包括范围元素匹配条件和目标元素匹配条件;
范围元素匹配条件:根据元素名、属性名或二者的组合条件作为匹配范围元素的条件;
目标元素匹配条件:根据元素名、属性名或二者的组合条件作为匹配目标元素的条件;
H、匹配范围元素:遍历XML文档,找到所有满足范围元素匹配条件的元素,即为范围元素;然后将范围元素下所有元素的类属性缓存器被初始化为空;
I、匹配目标元素,并进行目标元素解压操作;包括以下子步骤:
I1、遍历范围元素,取得满足目标元素匹配条件的子元素,即为需要解压的目标元素;
I2、通过如下目标元素解压算法从压缩XML文档中恢复目标元素所有的属性:
当前目标元素没有其元素类属性缓存器时,该目标元素不需要解压操作;
将目标元素已有的所有属性与其元素类属性缓存器比较,将只存在于其元素类属性缓存器中的属性恢复到目标元素中,从而使该目标元素恢复了该类元素所有的属性;
J、更新元素类属性缓存器。
5.根据权利要求4所述的一种可扩展标记语言XML文档解压方法,其特征在于,所述步骤J中,解压状态元素类属性缓存器更新算法规则如下:
(1)如果当前目标元素没有对应的元素类属性缓存器,则使用当前目标元素所有属性新建其元素类属性缓存器;
(2)将当前目标元素属性与其元素类属性缓存器比较,将属性值不一样的属性从目标元素更新到其元素类属性缓存器;
(3)将存在于目标元素但不存在于其元素类属性缓存器中的属性更新到其元素类属性缓存器。
6.一种可扩展标记语言XML文档压缩装置,其特征在于,包括以下模块:
接收读取模块:用于接收并读取需要压缩的XML文档;
压缩前置条件设置模块:包括范围元素匹配条件设置子模块和目标元素匹配条件设置子模块;
所述范围元素匹配条件设置子模块,用于从XML文档读取范围元素匹配条件信息或由外部应用通过本模块写入范围元素匹配条件信息;并根据范围元素匹配条件在XML根元素范围内查找到所有的范围元素,提供给压缩装置其它模块使用;
所述目标元素匹配条件设置子模块,用于从XML文档读取范围元素匹配条件信息或由外部应用通过本模块写入目标元素匹配条件信息;并根据目标元素匹配条件在其范围元素内查找到所有的目标元素,提供给压缩装置其它模块使用;
属性差异检测模块,用于将目标元素属性与其元素类属性缓存器进行属性值比较,取得属性值不同的属性;将目标元素属性与其元素类属性缓存器进行属性是否存在判断,取得存在于目标元素但不存在于其元素类属性缓存器中的属性;
元素压缩模块,用于将目标元素中经过属性差异检测模块得到的差异属性保存到压缩后XML文档中,目标元素其余属性将被丢弃,从而实现了元素压缩;
元素属性缓存器管理模块,用于记录指定元素类上一个元素节点具有的所有属性信息;如果当前目标元素不存在其元素类属性缓存器,则使用该目标元素所有属性新建其元素类属性缓存器;当前目标元素与其元素类属性缓存器比较,将属性值不一样的属性从目标元素更新到元素类属性缓存器;将存在于目标元素但不存在于其元素类属性缓存器中的属性添加到元素类属性缓存器中;
XML压缩文档生成模块,用于组织压缩后的XML文档,并以文件或数据流的形式对外输出压缩后的XML文档。
7.一种可扩展标记语言XML文档解压装置,其特征在于,包括以下模块:
接收读取模块,用于接收并读取需要压缩的XML文档;
解压前置条件设置模块,包括范围元素匹配条件设置子模块和目标元素匹配条件设置子模块;
所述范围元素匹配条件设置子模块用于从XML文档读取范围元素匹配条件信息或由外部应用通过本模块写入范围元素匹配条件信息;并根据范围元素匹配条件在XML根元素范围内查找到所有的范围元素,提供给压缩装置其它模块使用;
所述目标元素匹配条件设置子模块用于从XML文档读取范围元素匹配条件信息或由外部应用通过本模块写入目标元素匹配条件信息;并根据目标元素匹配条件在其范围元素内查找到所有的目标元素,提供给压缩装置其它模块使用;
属性是否存在检测模块,用于将目标元素属性与其元素类属性缓存器进行属性是否存在判断,取得存在于其元素类属性缓存器但不存在于目标元素中的属性;
元素解压模块,用于将属性是否存在检测模块得到的属性从元素类属性缓存器添加到目标元素中,使得目标元素恢复了该元素类的所有属性,从而实现了元素解压;
元素属性缓存器管理模块,用于记录指定元素类上一个元素节点具有的所有属性信息;如果当前目标元素不存在其元素类属性缓存器,则使用该目标元素所有属性新建其元素类属性缓存器;当前目标元素与其元素类属性缓存器比较,将属性值不一样的属性从目标元素更新到元素类属性缓存器;将存在于目标元素但不存在于其元素类属性缓存器中的属性添加到元素类属性缓存器中;
XML解压文档生成模块,用于组织解压后的XML文档,并以文件或数据流的形式对外输出解压后的XML文档。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011361707.7A CN112487249B (zh) | 2020-11-27 | 2020-11-27 | 一种可扩展标记语言xml文档压缩、解压方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011361707.7A CN112487249B (zh) | 2020-11-27 | 2020-11-27 | 一种可扩展标记语言xml文档压缩、解压方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112487249A CN112487249A (zh) | 2021-03-12 |
CN112487249B true CN112487249B (zh) | 2024-03-01 |
Family
ID=74936620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011361707.7A Active CN112487249B (zh) | 2020-11-27 | 2020-11-27 | 一种可扩展标记语言xml文档压缩、解压方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112487249B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101222476A (zh) * | 2007-01-08 | 2008-07-16 | 华为技术有限公司 | 一种可扩展标记语言文件编辑器、文件传输方法及系统 |
CN101223699A (zh) * | 2005-07-21 | 2008-07-16 | 易斯普维 | 压缩与解压缩结构化文档的方法和装置 |
CN101847998A (zh) * | 2010-04-15 | 2010-09-29 | 同济大学 | 一种高性能gml流压缩方法 |
CN103425692A (zh) * | 2012-05-22 | 2013-12-04 | 阿里巴巴集团控股有限公司 | 数据导出方法和装置 |
CN103902539A (zh) * | 2012-12-25 | 2014-07-02 | 三星电子(中国)研发中心 | 可扩展标记语言数据解析方法及装置 |
CN104917769A (zh) * | 2015-06-11 | 2015-09-16 | 北京嘉和美康信息技术有限公司 | 一种电子病历签名方法及装置 |
CN109241498A (zh) * | 2018-06-26 | 2019-01-18 | 中国建设银行股份有限公司 | Xml文件处理方法、设备和存储介质 |
CN111797596A (zh) * | 2020-05-18 | 2020-10-20 | 冠群信息技术(南京)有限公司 | 一种可扩展标记语言xml文档的压缩、解压方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130346700A1 (en) * | 2012-06-21 | 2013-12-26 | Alexander I. Tomlinson | Systems and methods for managing memory |
US10216556B2 (en) * | 2016-07-27 | 2019-02-26 | Sap Se | Master database synchronization for multiple applications |
-
2020
- 2020-11-27 CN CN202011361707.7A patent/CN112487249B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101223699A (zh) * | 2005-07-21 | 2008-07-16 | 易斯普维 | 压缩与解压缩结构化文档的方法和装置 |
CN101222476A (zh) * | 2007-01-08 | 2008-07-16 | 华为技术有限公司 | 一种可扩展标记语言文件编辑器、文件传输方法及系统 |
CN101847998A (zh) * | 2010-04-15 | 2010-09-29 | 同济大学 | 一种高性能gml流压缩方法 |
CN103425692A (zh) * | 2012-05-22 | 2013-12-04 | 阿里巴巴集团控股有限公司 | 数据导出方法和装置 |
CN103902539A (zh) * | 2012-12-25 | 2014-07-02 | 三星电子(中国)研发中心 | 可扩展标记语言数据解析方法及装置 |
CN104917769A (zh) * | 2015-06-11 | 2015-09-16 | 北京嘉和美康信息技术有限公司 | 一种电子病历签名方法及装置 |
CN109241498A (zh) * | 2018-06-26 | 2019-01-18 | 中国建设银行股份有限公司 | Xml文件处理方法、设备和存储介质 |
CN111797596A (zh) * | 2020-05-18 | 2020-10-20 | 冠群信息技术(南京)有限公司 | 一种可扩展标记语言xml文档的压缩、解压方法和装置 |
Non-Patent Citations (3)
Title |
---|
Stefan Böttcher 等. S2CX: From relational data via SQL/XML to (Un-)Compressed XML.《Information Systems》.2016,198–213. * |
吴煜州 等.XML压缩算法研究.《现代计算机(专业版)》.2012,(第14期),11-15. * |
童李文 等.可查询XML数据压缩技术概述.《计算机系统应用》.2010,第19卷(第03期),233-239. * |
Also Published As
Publication number | Publication date |
---|---|
CN112487249A (zh) | 2021-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5812999A (en) | Apparatus and method for searching through compressed, structured documents | |
CN102103605B (zh) | 一种智能提取文档结构的方法及系统 | |
US9208133B2 (en) | Optimizing typographical content for transmission and display | |
AU2006200055B2 (en) | System and method for storing a document in a serial binary format | |
CN112966469B (zh) | 文档中的图表处理方法、装置、设备及存储介质 | |
WO2021051532A1 (zh) | 数据压缩方法、装置、设备及计算机可读存储介质 | |
CN116402024A (zh) | 一种基于大型语言模型的工程文件生成方法及其系统 | |
CN112487763A (zh) | 基于svg的ofd文件在线显示方法、服务器端及系统 | |
JP3566457B2 (ja) | 構造化文書の版管理方法および装置 | |
CN111881651A (zh) | 一种uot流式文档转换成ofd版式文档的方法 | |
CN108664546A (zh) | Xml数据结构转换方法和装置 | |
CN112487249B (zh) | 一种可扩展标记语言xml文档压缩、解压方法及装置 | |
US11017155B2 (en) | Method and system for compressing data | |
US8930808B2 (en) | Processing rich text data for storing as legacy data records in a data storage system | |
US20120109911A1 (en) | Compression Of XML Data | |
US10515092B2 (en) | Structured record compression and retrieval | |
US20060242141A1 (en) | Abstracted metadata policy component and related architecture | |
CN105704215B (zh) | 文件共享系统及相应的文件发送方法及装置 | |
CN102467490B (zh) | 一种字体数据的处理方法及装置 | |
CN110554996A (zh) | 一种epub文件快速打开方法和系统 | |
CN101553800B (zh) | 将主机系统sam/vsam文件转换为开放系统sam/vsam文件的转换装置和方法 | |
CN112181221A (zh) | 图像处理方法及装置、计算机可读介质及电子设备 | |
CN112131337A (zh) | 非结构化数据的处理方法、装置、系统及存储介质 | |
CN111475679A (zh) | Html文档处理方法、页面显示方法和设备 | |
CN114218895B (zh) | 对uof文档进行转换的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |