歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java解析XML文件的DOM和SAX方式

Java解析XML文件的DOM和SAX方式

日期:2017/3/1 10:04:55   编辑:Linux編程

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所定 義的了。

Copyright © Linux教程網 All Rights Reserved