为了让大家更深入的了解和使用C#,我们将开始这一系列的主题为“C#发现之旅 ”的技术讲座。考虑到各位大多是进行WEB数据库开发的,而所谓发现就是发现我们所 不熟悉的领域,因此本系列讲座内容将是C#在WEB数据库开发以外的应用。目前规划的主要内 容是图形开发和XML开发,并计划编排了多个课程。在未来的C#发现之旅中,我们按照由浅入 深,循序渐进的步骤,一起探索和发现C#的其他未知的领域,更深入的理解和掌握使用C#进 行软件开发,拓宽我们的视野,增强我们的软件开发综合能力。
课程说明
本 课程专门讲述文档对象模型的概念,理论性比较强,需要仔细思考,而且没有演示程序,本课 程是C#发现之旅系列课程的终结篇,不过不排除我今后推出C#发现之旅续集的可能性。
文档对象模型定义
文档对象模型英文名为 Document Object Model , 简称 DOM,它是一种比较重要的软件设计模式,不是编程技巧。可以这么说,平生不认DOM,便称 英雄也枉然,大家应当多多了解它的能力。
文档对象模型是面向对象编程技术的集中 体现,若没有完整的面向对象编程思想,是不可能理解和开发文档对象模型,若开发者能开 发出文档对象模型,那就说明他/她比较完整的理解和掌握了面向对象编程思想。
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上的文档对象模型原理的一般看法。
文档
我们来 逐步理解这个定义。首先什么是文档。文档就是以一种结构组织在一起的数据包。比如MS Word 文档就是一种文档,它包含了很多字符,图片,段落数据,并使用特定的组织结构保存 在一个二进制文件中。 比如HTML文档,它也包含了文字,图片,链接,表单数据,并可以按 照公开的HTML语法组成一种层次结构保存在一个字符串或文本文件中。
结构化文档
其次,什么是结构化的文档,很多文档它的内容组织呈现一种层次化的结构。即它的 内容抽象化可以组成一种树状结构,比如HTML文档,XML文档。
对于普通的文本文档 ,从开发者看来,它就是一个字符串,其中各个字符或子字符串之间是没有相互关系的。此 时普通文本文档就不是结构化的文档,若将某种支持层次结构的语法分析强加到这个文本文 档时,则该文本文档就成了一个层次化的文档。
HTML文档若没有进行HTML语法解释, 则它就是一个平淡无奇的纯文本文档,就是一个普通的字符串,若将HTML语法强加到这个字 符串,则这个纯文本文档立即成为具有相当复杂度的结构化文档。同样的道理,XML文件, SQL语句等纯文本文档,在它没有解释前是一个普通的字符串,解释之后就成为大有用途的 XMLDOM,SQLDOM。
编程接口
DOM是一种接口或平台,对于软件开发者来说,这 种所谓的接口或平台就是编程接口(API),API有很多种,有直接调用函数的接口方式,比 如传统Win32API函数,还有一种是暴露可编程对象,编程对象有公开的属性方法或事件,比 如COM接口或.NET类库接口。还有基于WEB的WebService的编程接口。一般而言,对于DOM,编 程接口就表现为可编程对象的编程接口,就是DOM向外发布若干个可编程对象,别的应用程序 或者脚本语言可以调用这些可编程对象的公开成员。
DOM的一个重要特性就是应用程 序或者脚本程序能利用它来访问和更新结构化文档。这个意思是说,DOM向外提供若干个可编 程对象,这些对象内部使用种种手段,保证它和结构化文档中的某个部分保持对应关系,特 别是对象的属性和文档片断的属性保持映射关系。而外部程序获得可编程对象的属性,经过 DOM内部的映射关系,实际上就等价于获得某个文档片断的某个属性,外部程序修改可编程对 象的属性,经过内部的映射关系,最终导致某个文档片断的属性的修改。因此DOM是应用软件 和结构化文档之间的代理,应用软件使用DOM透视出文档的内容,也通过DOM“隔山打牛 ”的方式修改文档内容。