Java, 一杯濃濃的咖啡伴你到深夜
使用 domj4 API 創建與修改 XML 文檔
級別: 初級
Deepak VohraWeb 開發人員2004 年 4 月
dom4j 是一種解析 XML 文檔的開放源代碼 XML 框架。本文介紹如何使用包含在 dom4j 中的解析器創建并修改 XML 文檔。
dom4j API 包含一個解析 XML 文檔的工具。本文中將使用這個解析器創建一個示例 XML 文檔。清單 1 顯示了這個示例 XML 文檔,catalog.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。
dom4j-1.4/dom4j-full.jar
dom4j-1.4/dom4j.jar
dom4j.jar
使用 import 語句導入 dom4j API 類:
使用 DocumentHelper 類創建一個文檔實例。 DocumentHelper 是生成 XML 文檔節點的 dom4j API 工廠類。
DocumentHelper
使用 addElement() 方法創建根元素 catalog 。 addElement() 用于向 XML 文檔中增加元素。
addElement()
catalog
在 catalog 元素中使用 addComment() 方法添加注釋“An XML catalog”。
addComment()
在 catalog 元素中使用 addElement() 方法增加 journal 元素。
journal
使用 addAttribute() 方法向 journal 元素添加 title 和 publisher 屬性。
addAttribute()
title
publisher
向 article 元素中添加 journal 元素。
article
為 article 元素增加 level 和 date 屬性。
level
date
向 article 元素中增加 title 元素。
使用 setText() 方法設置 article 元素的文本。
setText()
在 article 元素中增加 author 元素。
author
在 author 元素中增加 firstname 元素并設置該元素的文本。
firstname
在 author 元素中增加 lastname 元素并設置該元素的文本。
lastname
XML 聲明 <?xml version="1.0" encoding="UTF-8"?> 自動添加到 XML 文檔中。
<?xml version="1.0" encoding="UTF-8"?>
清單 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 包中。
SAXReader
inputXml 是從 catalog.xml 創建的 java.io.File。使用 XPath 表達式從 article 元素中獲得 level 節點列表。如果 level 屬性值是“Intermediate”則改為“Introductory”。
inputXml
獲取 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 文檔。
posted on 2005-12-12 19:49 Scott@JAVA 閱讀(2304) 評論(0) 編輯 收藏 所屬分類: XML
Powered by: BlogJava Copyright © Scott@JAVA