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













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













與 W3C DOM API 相比,使用 dom4j 所包含的解析器的好處是 dom4j 擁有本地的 XPath 支持。DOM 解析器不支持使用 XPath 選擇節(jié)點(diǎn)。
本文包括以下幾個(gè)部分:
- 預(yù)先設(shè)置
- 創(chuàng)建文檔
- 修改文檔
預(yù)先設(shè)置
這個(gè)解析器可以從 http://dom4j.org 獲取。通過(guò)設(shè)置使 dom4j-1.4/dom4j-full.jar
能夠在 classpath 中訪問(wèn),該文件中包括 dom4j 類、XPath 引擎以及 SAX 和 DOM 接口。如果已經(jīng)使用了 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只實(shí)現(xiàn)了核心的功能,parser等都在lib下面)
創(chuàng)建文檔
本節(jié)討論使用 dom4j API 創(chuàng)建 XML 文檔的過(guò)程,并創(chuàng)建示例 XML 文檔 catalog.xml。
使用 import 語(yǔ)句導(dǎo)入 dom4j API 類:



使用 DocumentHelper
類創(chuàng)建一個(gè)文檔實(shí)例。 DocumentHelper
是生成 XML 文檔節(jié)點(diǎn)的 dom4j API 工廠類。

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

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

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

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


向 article
元素中添加 journal
元素。

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



向 article
元素中增加 title
元素。

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

在 article
元素中增加 author
元素。

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


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


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






















































這一節(jié)討論了創(chuàng)建 XML 文檔的過(guò)程,下一節(jié)將介紹使用 dom4j API 修改這里創(chuàng)建的 XML 文檔。
修改文檔
這一節(jié)說(shuō)明如何使用 dom4j API 修改示例 XML 文檔 catalog.xml。
使用 SAXReader 解析 XML 文檔 catalog.xml:


SAXReader
包含在 org.dom4j.io 包中。
inputXml
是從 catalog.xml 創(chuàng)建的 java.io.File。使用 XPath 表達(dá)式從 article
元素中獲得 level
節(jié)點(diǎn)列表。如果 level
屬性值是“Intermediate”則改為“Introductory”。









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















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

























































































































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