使用Xerces-J的DOM方式进行XML程序设计
--简介与背景知识
DOM(document objet model)是由W3C提出的一套把XML,HTML等文本转换成一系列描述文档的各个组成部分及其相互关系的各种对象的一套标准,根据这个标准,我们可以把一个XML文件转换成一系列在其他语言,例如java,javascript,C++,中可以访问的DOM对象树。文档中的层次关系关系被转换成一棵树状的对象集合。我在这里不想解释为什么一个XML文档可以被转换成树状的结构而不是其他类型的结构,请到此连接寻找相关信息。我们可以从这个树中读取信息,可以向这个树添加信息,还可以从这个树中剔除信息,当然还可以把这棵树转换成原来的XML文件。由于DOM具有这些优点,尤其是可以动态修改的优点,使DOM在很多方面在实际应用中比SAX功能更加强大,因此我们将用大篇幅介绍。但是同SAX相比,DOM方法解析XML文件需要读取整个文件,然后把文件的内容转化为一个个的对象保存在内存中,而且不能忽略不需要的部分,因此速度和效率要比SAX低。在速度效率要求比较高的场合使用SAX是更好的选择。
DOM本身是同语言和平台无关的。W3C给出的DOM关系是使用IDL来进行描述的,IDL几乎可以直接转化为java代码,因此使用java来实现DOM非常方便。
下面是W3C提出的文档对象模型中各种对象的继承关系,这里使用Java语言的界面来描述,所有的文件都包含在包org.w3c.dom中。其中一些重要的界面进行了比较详细的讨论,请点击相应的连接。
从这里我们可以看出,在整个对象的集成关系中,有四个最基本的界面,分别为 DOMImplementation,NamedNodeMap,Node和NodeList。其中Node界面是最重要的一个界面,用来描述文档的其他所有的界面都是从Node界面衍生出来的。Node界面及其实现类是DOM中最基本的组成元素,文档中的任何内容都可以被称作是一个节点。另外几个底层界面还包括DOMImplementation,这个界面用来进行一些与文档的实例无关的操作。