使用 dom4j 解析 XML
使用 domj4 API 創建與修改 XML 文檔
級別: 初級 |
Web 開發人員
2004 年 4 月
dom4j 是一種解析 XML 文檔的開放源代碼 XML 框架。本文介紹如何使用包含在 dom4j 中的解析器創建并修改 XML 文檔。
dom4j API 包含一個解析 XML 文檔的工具。本文中將使用這個解析器創建一個示例 XML 文檔。清單 1 顯示了這個示例 XML 文檔,catalog.xml。













然后使用同一個解析器修改 catalog.xml,清單 2 是修改后的 XML 文檔,catalog-modified.xml。
清單 2. 修改后的 XML 文檔(catalog-modified.xml)













與 W3C DOM API 相比,使用 dom4j 所包含的解析器的好處是 dom4j 擁有本地的 XPath 支持。DOM 解析器不支持使用 XPath 選擇節點。
本文包括以下幾個部分:
- 預先設置
- 創建文檔
- 修改文檔
預先設置
這個解析器可以從 http://dom4j.org 獲取。通過設置使 dom4j-1.4/dom4j-full.jar
能夠在 classpath 中訪問,該文件中包括 dom4j 類、XPath 引擎以及 SAX 和 DOM 接口。如果已經使用了 JAXP 解析器中包含的 SAX 和 DOM 接口,向 classpath 中增加 dom4j-1.4/dom4j.jar
。 dom4j.jar
包括 dom4j 類和 XPath 引擎,但是不含 SAX 與 DOM 接口。
我使用的是dom4j-1.6.1.jar,要將dom4j-1.6.1.jar和lib下的jaxen-1.1-beta-6.jar加入classpath。(dom4j只實現了核心的功能,parser等都在lib下面)
創建文檔
本節討論使用 dom4j API 創建 XML 文檔的過程,并創建示例 XML 文檔 catalog.xml。
使用 import 語句導入 dom4j API 類:



使用 DocumentHelper
類創建一個文檔實例。 DocumentHelper
是生成 XML 文檔節點的 dom4j API 工廠類。

使用 addElement()
方法創建根元素 catalog
。 addElement()
用于向 XML 文檔中增加元素。

在 catalog
元素中使用 addComment()
方法添加注釋“An XML catalog”。

在 catalog
元素中使用 addElement()
方法增加 journal
元素。

使用 addAttribute()
方法向 journal
元素添加 title
和 publisher
屬性。


向 article
元素中添加 journal
元素。

為 article
元素增加 level
和 date
屬性。



向 article
元素中增加 title
元素。

使用 setText()
方法設置 article
元素的文本。

在 article
元素中增加 author
元素。

在 author
元素中增加 firstname
元素并設置該元素的文本。


在 author
元素中增加 lastname
元素并設置該元素的文本。


XML 聲明 <?xml version="1.0" encoding="UTF-8"?>
自動添加到 XML 文檔中。
清單 3 所示的例子程序 XmlDom4J.java 用于創建 XML 文檔 catalog.xml。
清單 3. 生成 XML 文檔 catalog.xml 的程序(XmlDom4J.java)






















































這一節討論了創建 XML 文檔的過程,下一節將介紹使用 dom4j API 修改這里創建的 XML 文檔。
修改文檔
這一節說明如何使用 dom4j API 修改示例 XML 文檔 catalog.xml。
使用 SAXReader 解析 XML 文檔 catalog.xml:


SAXReader
包含在 org.dom4j.io 包中。
inputXml
是從 catalog.xml 創建的 java.io.File。使用 XPath 表達式從 article
元素中獲得 level
節點列表。如果 level
屬性值是“Intermediate”則改為“Introductory”。









獲取 article
元素列表,從 article
元素中的 title
元素得到一個迭代器,并修改 title
元素的文本。















通過和 title
元素類似的過程修改 author
元素。
清單 4 所示的示例程序 Dom4JParser.java 用于把 catalog.xml 文檔修改成 catalog-modified.xml 文檔。
清單 4. 用于修改 catalog.xml 的程序(Dom4JParser.java)

























































































































這一節說明了如何使用 dom4j 中的解析器修改示例 XML 文檔。這個解析器不使用 DTD 或者模式驗證 XML 文檔。如果 XML 文檔需要驗證,可以解釋用 dom4j 與 JAXP SAX 解析器。
結束語
包含在 dom4j 中的解析器是一種用于解析 XML 文檔的非驗證性工具,可以與JAXP、Crimson 或 Xerces 集成。本文說明了如何使用該解析器創建和修改 XML 文檔。
后記:想了解更多XPath,請參考http://www.w3schools.com/xpath/default.asp
posted on 2005-12-12 19:49 Scott@JAVA 閱讀(2308) 評論(0) 編輯 收藏 所屬分類: XML