Java 与 XML 联合编程之 DOM 篇
DOM 初步
DOM 是 Document Object Model 的缩写,即文档对象模型。前面说过,XML 将数据组织为一颗树,所以 DOM
就是对这颗树的一个对象描叙。通俗的说,就是通过解析 XML 文档,为 XML 文档在逻辑上建立一个树模
型,树的节点是一个个对象。我们通过存取这些对象就能够存取 XML 文档的内容。
下面我们来看一个简单的例子,看看在 DOM 中,我们是如何来操作一个 XML 文档的。
这是一个 XML 文档,也是我们要操作的对象:
<?xml version="1.0" encoding="UTF-8"?>
<messages>
<message>Good-bye serialization, hello Java!</message>
</messages>
下面,我们需要把这个文档的内容解析到一个个的 Java 对象中去供程序使用,利用 JAXP,我们只需几行
代码就能做到这一点。首先,我们需要建立一个解析器工厂,以利用这个工厂来获得一个具体的解析器对
象:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
我 们 在 这 里 使 用 DocumentBuilderFacotry 的 目 的 是 为 了 创 建 与 具 体 解 析 器 无 关 的 程 序 , 当
DocumentBuilderFactory 类的静态方法 newInstance()被调用时,它根据一个系统变量来决定具体使用哪一个
解析器。又因为所有的解析器都服从于 JAXP 所定义的接口,所以无论具体使用哪一个解析器,代码都是
一样的。所以当在不同的解析器之间进行切换时,只需要更改系统变量的值,而不用更改任何代码。这就
是工厂所带来的好处。这个工厂模式的具体实现,可以参看下面的类图。
DocumentBuilder db = dbf.newDocumentBuilder();
当获得一个工厂对象后,使用它的静态方法 newDocumentBuilder()方法可以获得一个 DocumentBuilder 对象,
这个对象代表了具体的 DOM 解析器。但具体是哪一种解析器,微软的或者 IBM 的,对于程序而言并不重
要。
然后,我们就可以利用这个解析器来对 XML 文档进行解析了:
Document doc = db.parse("c:/xml/message.xml");
DocumentBuilder 的 parse()方法接受一个 XML 文档名作为输入参数,返回一个 Document 对象,这个
Document 对象就代表了一个 XML 文档的树模型。以后所有的对 XML 文档的操作,都与解析器无关,直
接在这个 Document 对象上进行操作就可以了。而具体对 Document 操作的方法,就是由 DOM 所定义的了。
评论0