ODFDOM for Java:简化文档及其数据的程序控制,第 2 部分
2010-05-05 00:00:00 来源:WEB开发网其中:
第一个参数:sourceRoot 指向生成源代码的目标目录。
第二个参数:schemaFile 指定 ODF 模式的位置。用户可以通过替换模式文件的任何版本获得相应的 DOM 层代码。
第三个参数:configFile 列出一些 XML 元素的基类和层次关系、属性的默认值(因为第二个参数指定的模式文件不包含默认值,而 ODF 规范中定义了默认值)以及 W3C 定义的数据类型的类实现。
第四个参数:templateFile 定义生成的每个元素和属性类的模板。
ODFDOM 便利层
正如前面指出的,包层可以从 ODF 包中获取流,然后 DOM 层构造和操作 DOM 树,最后可以把修改后的流保存回包中。
对于开发人员来说,通过操作 ODF 指定的元素和属性来操作文档很复杂,对于不熟悉 ODF 规范和 XML 解析器的开发人员尤其复杂。
便利层的目标
便利层 API 是更容易使用的编程接口,是针对常用的文档操作场景设计的。用户不需要操作 DOM 树,只需编写很少的源代码就可以实现一系列文档操作,比如插入表格、更新文档中的图表以及在不同的文档之间复制和粘贴文本。
另外,用户不需要考虑 ODF 包中文件流的特定内容。便利层 API 为每个文档特性实现一套 API,一个特性可能涉及多个 XML 元素。
只需要三行代码就可以创建表格:打开文档,在某一位置插入表格,然后保存它。这非常方便。
便利层功能
下面介绍便利层的一些关键功能:
文档级操作。与包级不同,在文档级上可以创建和保存不同类型的 ODF 文档(.odt、.odp、.ods 文件),还可以把文档嵌入另一个文档。
便利层和 DOM 层映射关系。便利层的类常常派生自相应的 DOM 层元素类以继承 DOM 功能。便利类的名称与其父类相似,但是加上前缀 "Odf" 并去掉后缀 "Element"。
例如,对于 <draw:frame> 元素,DOM 层类名是 org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement,而便利层类名为 org.odftoolkit.odfdom.doc.draw.OdfDrawFrame。
但是,这种设计看起来与便利层的目标冲突,便利层主要关注文档特性,一个特性可能控制多个 XML 元素。因此,我们重构了便利层 API,使用委托设计模式而不是继承。
换句话说,便利层中的每个特性通过委托和组织相关的 DOM 层元素类实现便利层 API。
例如,对于用于在文档中插入、删除或修改表格的表格特性,打破了便利层类和 DOM 层类之间的一对一继承关系,改为使用复合关系。
因此,表格特性类以 DOM 元素类 org.odftoolkit.odfdom.dom.element.table.TableTableElement 作为类成员。
便利的 API。ODFDOM version 0.8 于 2010 年 2 月 19 日发布。它增加了许多令人兴奋的便利层 API,包括文本导航 API。用户可以通过它们操作文本、图像和表格特性,还可以轻松地搜索和替换文本内容。
另外,还增加了用于在 ODF 文本文档中导航的 incubator 包,它可以按文本模式或样式搜索文本以及在选择的文本上执行操作。
便利层的所有源代码都在 org.odftoolkit.odfdom.doc.* 包中。
结束语
ODFDOM API 采用一种分层的文档访问方法。本文介绍了这些层的组成和功能以及相邻层之间的关系。用户可以根据自己的需求灵活地使用不同的层。
本文示例源代码或素材下载
更多精彩
赞助商链接