TextText 定義XML 文本節(jié)點(diǎn).
VisitorVisitor 用于實(shí)現(xiàn)Visitor模式.
XPathXPath 在分析一個(gè)字符串后會(huì)提供一個(gè)XPath 表達(dá)式
看名字大致就知道它們的涵義如何了。
要想弄懂這套接口,關(guān)鍵的是要明白接口的繼承關(guān)系:
o interface java.lang.Cloneable
o interface org.dom4j.Node
§ interface org.dom4j.Attribute
§ interface org.dom4j.Branch
§ interface org.dom4j.Document
§ interface org.dom4j.Element
§ interface org.dom4j.CharacterData
§ interface org.dom4j.CDATA
§ interface org.dom4j.Comment
§ interface org.dom4j.Text
§ interface org.dom4j.DocumentType
§ interface org.dom4j.Entity
§ interface org.dom4j.ProcessingInstruction
一目了然,很多事情都清楚了。大部分都是由Node繼承來的。知道這些關(guān)系,將來寫程序就不會(huì)出現(xiàn)ClassCastException了。
下面給出一些例子(部分摘自DOM4J自帶的文檔),簡(jiǎn)單說一下如何使用。
1. 讀取并解析XML文檔:
讀寫XML文檔主要依賴于org.dom4j.io包,其中提供DOMReader和SAXReader兩類不同方式,而調(diào)用方式是一樣的。這就是依靠接口的好處。
// 從文件讀取XML,輸入文件名,返回XML文檔
public Document read(String fileName) throws MalformedURLException, DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read(new File(fileName));
return document;
}
其中,reader的read方法是重載的,可以從InputStream, File, Url等多種不同的源來讀取。得到的Document對(duì)象就帶表了整個(gè)XML。
根據(jù)本人自己的經(jīng)驗(yàn),讀取的字符編碼是按照XML文件頭定義的編碼來轉(zhuǎn)換。如果遇到亂碼問題,注意要把各處的編碼名稱保持一致即可。
2. 取得Root節(jié)點(diǎn)
讀取后的第二步,就是得到Root節(jié)點(diǎn)。熟悉XML的人都知道,一切XML分析都是從Root元素開始的。
public Element getRootElement(Document doc){
return doc.getRootElement();
}
3. 遍歷XML樹
DOM4J提供至少3種遍歷節(jié)點(diǎn)的方法:
1) 枚舉(Iterator)
// 枚舉所有子節(jié)點(diǎn)
for ( Iterator i = root.elementIterator(); i.hasNext(); ) {
Element element = (Element) i.next();
// do something
}
// 枚舉名稱為foo的節(jié)點(diǎn)
for ( Iterator i = root.elementIterator(foo); i.hasNext();) {
Element foo = (Element) i.next();
// do something
}
// 枚舉屬性
for ( Iterator i = root.attributeIterator(); i.hasNext(); ) {
Attribute attribute = (Attribute) i.next();
// do something
}
相關(guān)推薦:計(jì)算機(jī)等級(jí)考試二級(jí)Java經(jīng)典算法大全匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |