资源描述:
《系统分析师考试复习部分(2)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、系统分析师考试复习部分(2)和CORBA、DCOM这些技术并不冲突:XML可以为它们做传递信息、资料桥梁;XML使用方便;XML是纯文本形式,阅读方便,可用编辑器直接编写,可以直接透过HTTP或SMTP等通信协议传送,开放式标准,对数据的描述,有有进行数据挖掘,编排的便利。但是处理速度较慢。SAX(SimpleAPIforXML)和DOM(DocumentObjectModel)都是为了让程序员不用写一个解析器就可以访问他们的资料信息。通过利用XML1.0格式保存信息,以及使用SAX或者DOMAPIs你的程序可以使用任何解析器。这是因为使用他
2、们所喜爱的语言开发解析器的开发者必须实现SAX和DOMAPIs。SAX和DOMAPIs对多种语言中都可以实现(Java,C++,Perl,Python,其它...)。所以SAX和DOM都是为了同样的目的而存在,这就是使用户可以利用任何编程语言访问存入XML文档中的信息(要有一个那种编程语言的解析器)。虽然他们在提供给你访问信息的方法上大不相同。什么是DOM? DOM可以让你以分层次对象模型来访问储存在XML文档中的信息。DOM生成一棵节点树(以XML文档的结构和信息为基础)你可以通过这棵树来访问你的信息。在XML文档中的文本信息转
3、变成一组树的节点。你的XML文档中的信息的类型(不管是表格数据,或是一列items,或者只是文档),DOM在你创建一个XML文档的文档对象时创建一棵节点树。DOM强迫你使用树状模型(就像SwingTreeModel)去访问你的XML文档中的信息。这种模式确实不错因为XML原本就是分层次的。这也是DOM为什么可以把你的信息放到一棵树中的原因(即使信息是表格式的或者简单的列表????这里不知道该怎么翻原文是:eveniftheinformationisactuallytabularorasimplelist??????)。上图是过分简单的,因为在
4、DOM中,每一个元素节点实际上都有一系列的其他节点作为它的孩子。这些孩子节点可以包含文本值或者是其他元素节点。乍看起来,通过遍历访问一个元素的所有孩子节点来访问这个节点的值是没有必要的(举例来说:节点"Nazmul",Nazmul是值)。如果每个元素只有值的话,这确实是没有必要的。但是,元素可能含有文本数据或者其他元素;这是你要在DOM中做额外的工作来获取元素节点值的原因。通常当你的文档中只有纯数据时,把所有的数据压成一个“块“放到字串中并让DOM把那个字串当成某个特定元素节点的值返回是适当的。这种方式并不适合如果在
5、你的XML文档中的数据是个文档(比如像WORD文档或者FRAMEMAKER文档)在文档中,元素的顺序是非常重要的。对于纯数据(像一个数据库表)元素的顺序是不要紧的。之所以DOM保持从XML文档中读出的元素的顺序,因为它把所有的事物都当成文档来处理。文档对像模型的叫法由此而来。如果你计划用DOM做为JAVA对象模型用于你存储在XML文档中的信息,那么你不需要考虑SAX。可是如果你发现DOM不是一个可以用于处理XML文档信息的好的对象模式,那么你可能想看看SAX了。在一些必须使用自定义对象模型的案例中使用SAX是非常普遍的。说一句让事情看来有些糊
6、涂的话,你也可以在DOM的基础之上创建自己的对象模式。面向对象真是个好东东。什么是SAX?SAX让你访问储存在XML文档中的信息,不是通过节点树,而是一系列的事件。你会问,这有什么益处?回答是,SAX选择不在XML文档上创建JAVA对象模型(像DOM做的那样)。这样使得SAX更快,同时使下面所述成为必要: 创立你自己的自定义对像模型创建一个监听SAX事件的类同时,创建你自己的对象模型。注意这些步骤对DOM而言是不必要的,因为DOM已经为你创建了一个对象模型(将你的信息用一棵节点树表示)。在使用DOM的情况下,解析器做了绝大多数事情,读入XML
7、文档,在这基础之上创建JAVA对象模型,然后给你一个对这个对象的引用(一个Document对象),因而你可以操作使用它。SAX被叫做SimpleAPIforXML不是没有原因的,她真的很简单。SAX没有期待解析器去做这么多工作,所有SAX要求的是解析器应该读入XML文档,同时根据所遇到的XML文档的标签发出一系列事件。你要自己写一个XML文档处理器类(XMLdocumenthandlerclass)来处理这些事件,这意味着使所有标签事件有意义还有用你自己的对象模型创建对象。所以你要完成:控制所有XML文档信息的自定义对象模型(或者源文档在这里
8、的写法从来没有见过,或者怀疑源文档在这里有排版错误,先这么翻了)一个监听SAX事件(事件由SAX解析器读取你的XML文档时产生)的文档处理器,还有解释这些事件创建你