用.NET实现所见即所得的设计器(2)
点击次数:28 次 发布日期:2008-11-26 12:26:37 作者:源代码网
|
源代码网推荐 源代码网推荐 对于计算机程序,后台决定前台,而设计器的后台就是文档对象模型。相信大家对文档对象模型有所了解,我们在WEB页面中使用JAVASCRIPT脚本时就是访问了HTML文档对象模型,我们操作XML文档就是访问XML文档对象模型。 源代码网推荐 源代码网推荐 W3C国际组织对文档对象模型是这样定义的(摘自 http://www.w3.org/DOM/ ) 源代码网推荐 源代码网推荐 The Document Object Model is a platform- and language-neutral interface that will allow programs and scripts to dynamically access and update the content, structure and style of documents. The document can be further processed and the results of that processing can be incorporated back into the presented page. This is an overview of DOM-related materials here at W3C and around the web. 源代码网推荐 源代码网推荐 以我个人的英文水平翻译如下 源代码网推荐 源代码网推荐 文档对象模型是一种语言中立的接口或平台,程序或脚本能利用它来访问和更新结构化的文档。这些文档可以被进一步的处理,处理结果可以组成一个有效页面。这是W3C对web上的对文档对象模型原理的一般看法。 源代码网推荐 源代码网推荐 我个人认为,对于编程,文档对象模型其主要内容就是,面对比较复杂的文档,使用面向对象的编程思想,使用一个个程序世界中的对象来映射文档中的每一个特定的部分。加载文档时,可以解析文档,并把其表示的内容映射为一个个对象,此时应用程序可以修改这些对象的数据,当保存文档时,可以将这些对象数据组织起来按照特定的格式保存到文档中。这样程序就通过访问文档对象来访问文档,也可以修改文档对象来修改文档,如此实现了对复杂文档的处理。文档对象模型是处理复杂文档的标准操作模式。 源代码网推荐 源代码网推荐 设计器处理的是复杂的文档,因此也需要使用文档对象模型。文档对象模型可分为三大部分:文档基本元素,文档对象和各种类型的从文档基本元素派生出的文档元素。 源代码网推荐 源代码网推荐 文档基本元素是整个文档对象模型的最基础的对象(就像Object类型是.NET对象集团的基础一样),它定义了文档元素的通用接口,一般定义为抽象类,类型名称可以为DesignElement 。 源代码网推荐 源代码网推荐 文档对象是文档对象模型的顶级对象,它包含了整个文档的内容,其类型名称可以为 DesignDocument 。 源代码网推荐 源代码网推荐 各种类型的文档元素,它是派生自文档基本元素类型,用于描述文档中各种实际存在的元素。其中可以定义一种文档元素,它们可以容纳其他的文档元素,这些元素就是容器元素。实际上文档对象就是最大的容器元素。由于文档对象模型中存在容器元素,因此所有的对象都组成一个树状结构,称为文档对象树,其中根节点就是文档对象。各种文档元素是文档对象模型的活跃分子,扩展文档对象模型大部分工作就是扩展这些文档元素,扩展文档元素需要扩展它们的两个功能,一个是文档的加载和保存,一个就是文档本身保存的数据。 源代码网推荐 源代码网推荐 文档对象模型可以和用户界面相关,也可以不相关,例如XML文档对象模型是无用户界面的。设计器的文档对象模型是和用户界面相关的,对此,扩展设计文档对象模型的文档元素时还需要扩展它们的绘制图形的能力以便设计器能绘制新型的文档元素图形。 源代码网推荐 源代码网推荐 对于设计文档对象模型,其文档基础元素可以定义的内容有三个方面,文档的加载和保存,用户界面相关的接口,维护文档对象树的接口。 源代码网推荐 源代码网推荐 文档的加载和保存 源代码网推荐 源代码网推荐 设计文档可以保存为二进制文档,纯文本文档和其他格式,在此推荐使用XML文档格式。其好处是 源代码网推荐 源代码网推荐 ·设计文档对象模型和XML文档对象模型都属于文档对象模型,两者原理和结构上都有着很大的相似性,设计文档元素和XML文档元素可以存在一一对应的关系。因此使用XML文档加载和保存设计文档对象是很自然的,实现起来比较简单。 源代码网推荐 源代码网推荐 ·XML文档是国际标准的文档格式,非常开方,其他应用程序很容易利用设计器生成的文件,简化了设计器和其他应用系统的数据接口。 源代码网推荐 源代码网推荐 ·已经存在标准的XML文档解析器和XML文档对象模型,因此不需自己处理XML文档,只需调用标准库加载XML文档对象模型,然后按照一一对应的关系来生成设计文档对象模型。 源代码网推荐 源代码网推荐 ·使用XML文档有利于保持设计器的各个版本间的兼容性。只要XML文档结构不发生大变化,低版本的设计器可以加载高版本的设计器生成的文档,同样高版本的设计器也很容易加载低版本的设计器生成的文档。若使用二进制文件格式,则设计器需要编写对于不同版本的设计文档的预处理器,比较麻烦而且很难做到向上兼容。 源代码网推荐 源代码网推荐 在保存对象数据到XML文档时,保存方式有两种,保存到XML属性和保存到XML元素。当指定某个XML元素用于保存对象数据时,若使用保存到XML属性时,会对对象每一个属性,将其数据保存到指定名称的XML属性中,而保存到XML元素时,会在当前的XML节点下新增一个指定名称的XML子元素。然后将属性值保存到XML子元素中。这两种方式生成的XML片断为 源代码网推荐 源代码网推荐 <ELEMENT attributename2="value2" attributename1="value1" /> 源代码网推荐 源代码网推荐 和 源代码网推荐 源代码网推荐 <ELEMENT> 源代码网推荐 <ATTRIBUTENAME1>value1</ATTRIBUTENAME1> 源代码网推荐 <ATTRIBUTENAME2>value2</ATTRIBUTENAME2> 源代码网推荐 </ELEMENT> 源代码网推荐 源代码网推荐 面对这两种方式,我建议选择第二种,其原因有: 源代码网推荐 源代码网推荐 ·若保存到XML属性,则当对象属性比较多是,使用缩进方式输出的XML文档将比较宽,在查看是会出现横向滚动条,不利于阅读。而保存到XML元素时,XML文档不会很宽,便于阅读。 源代码网推荐 源代码网推荐 ·若多行文本保存到XML属性,则一般不会以多行文本的方式保存,不利于阅读。而保存到XML元素时,则保存的文本和实际的文本比较接近,便于阅读。 源代码网推荐 源代码网推荐 ·若保存到XML属性,则保存方式只能是一个属性字符串,而保存到XML元素时则保存的方式很容易进行扩展。 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
