| WPS Office 飓风主要的技术突破 |
|
| http://www.kingsoft.com
(2004年06月05日16:10:53) 文章来源:金山软件 |
WPS文件格式转换器结构说明
WPS Office Storm 结构完全兼容WPS2000及以后各版本的WPS文件格式。转换器的逻辑结构总体如下:

图1 转换器的三层结构
一、文件序列化
文件序列化功能上主要是读取WPS Office 2003及以前的各版本WPS文件,把这些数据从文件读到内存,组织成WPS Office 2003的文件逻辑格式。
序列化过程主要分为以下几步:
1.判断文件的版本、类型
转换器内部实现各种文件类型的自动模块判断,根据不同的类型动态调用对应的转换模块,例如是演示文档,就自动调用注册的演示转换模块。
2.按照序列化方式读取所有的数据,组织成内存文件的一个实例
二、原子数据的组织
1.原子数据的概念
所谓的原子数据,就是“不能再分的数据”,比如一个整形变量,一个指针等。中间层把Doc实例里的数据按照各种类型,分解成一个个的“原子数据”,在根据这些“原子数据”的类型、意义组合成一个结点。
所谓的类型、意义是指一个数据在某个类中代表的实际意义,比如有如下变量:
COLORREF m_bkColor = 0x888888;
在类中代表背景颜色,被中间层理解时,就是: CLASSIC , ATTCOLOR , 0x888888。这样就可以在中间层转换为XML格式时,完全不考虑这个变量从哪个类来,只要根据结点自带的信息就可以写成正确的XML结点。
2.原子结构的描述
定义原子结构的目的:是为了避免在中间层有重复的数据;同时也提高了中间层收容数据/处理数据的效率。
文档中的数据重复性:一个文档中,重复的数据信息是大量的,比如不同的段,他们的段属性可能是一样的;即使整体段属性不一致,段属性里面的具体属性也可能会出现很多一样的具体属性。如果中间层对这些重复的属性不再记录,会有效的降低内层中数据的冗余。
原子数据意义的表达:类中的数据是有实际意义的,在被分解成原子结构后必须仍然能如实的表达原意。所以中间层定义了“原子结构”:
数据的类别、数据的意义、数据的值
3.原则结构对原子数据唯一性的保障
通过Hash表存储原子数据,保障每个原子数据结构在Hash表里的存储都是唯一的。只有类型值lAttriCode和数据值AttriValue都相等的情况下,一个原子结构才认为是相等的。
总结:通过设计中间层原子结构,把序列化出来的文档数据分解成一个个有实际意义的ATTRNOTE结点,存储在内存中。由Hash表来保证这些数据的唯一性。
三、中间数据层的容器使用原子结构把原来的文件信息分解成一个个唯一的原子数据后,为了表达原来具体某个类,就需要一个容器把相关的原子结构组织起来,即把这个类用到的信息的结点的指针放到一个容器里。容器也形成了一个3层结构,其功能和目的就是为了把原子数据再组合成更高一级的表达实际意义的原子结构链。比如一个段属性,容器就负责把它的段前间距、段居中属性等原子数据串起来。[未结束]
|
| [1] [2] [3] 【责任编辑:Darvid】 |
|
|
| 近日热门点击 |
 |
|
|
|