Dom4j應(yīng)用總結(jié)
?
Dom4j是一個(gè)開(kāi)源的java xml解析處理工具。是Java解析處理xml的首選工具。
?
要用好Dom4j,必須先理解xml DOM模型。舉個(gè)簡(jiǎn)單例子說(shuō)明下:
?
比如有個(gè)person.xml
<?
xml
version
="1.0"
encoding
="GBK"
?>
<
person
no
="234"
>
????
<
name
>
????????
<
firstname
>
王
</
firstname
>
????????
<
lastname
>
八
</
lastname
>
????
</
name
>
????
<
age
>
55
</
age
>
????
<
sex
>
Man
</
sex
>
</
person
>
?
第一行是 XML 聲明。它定義 XML 的版本 (1.0) 和所使用的編碼GBK。
<person>是xml的根元素,no是<person>元素的一個(gè)屬性(Attribute),屬性值為234。屬性 (Attribute) 提供關(guān)于元素的額外信息。
<name>是一個(gè)<person>元素(Element)的子元素,<firstname>、<lastname>是其<name>的子元素,其值分別為“王、八”。呵呵。
通過(guò)這個(gè)xml,你可以知道王八的編號(hào)、姓名、年齡、性別。
?
XML DOM (XML
Document
Object Model) 定義一套訪問(wèn)和操作 XML 文檔的標(biāo)準(zhǔn)方法。
?
DOM 把 XML 文檔作為樹(shù)結(jié)構(gòu)來(lái)查看。能夠通過(guò) DOM 樹(shù)來(lái)訪問(wèn)所有元素。可以修改或刪除它們的內(nèi)容,并創(chuàng)建新的元素。元素,它們的文本,以及它們的屬性,都被認(rèn)為是節(jié)點(diǎn)(Node)。
?
Dom4j是XML DOM的一種實(shí)現(xiàn)。因此DOM的概念和思想在Dom4j是一樣的。
?
下面總結(jié)下DOM4j中常用的一些方法:
?
1、從文件獲取
Document
對(duì)象
xml是存儲(chǔ)內(nèi)存活著硬盤(pán)等介質(zhì)中的數(shù)據(jù),必須經(jīng)過(guò)讀取才能生成
Document
對(duì)象。
創(chuàng)建一個(gè)讀取工具,
SAXReader reader = SAXReader()
然后,讀取文檔
read(File file) 或者read(InputStream in) 來(lái)讀入并生成
Document
對(duì)象:
Document
document
= reader.read();
當(dāng)然這個(gè)讀取工具很多,讀入的方式也很多,原理就是這樣的。
?
2、從
String
獲取
Document
對(duì)象
Document
document
= DocumentHelper.parseText(
String
text)
?
Node.asXML()
Node這個(gè)在這里是接口,其他Attribute, Branch, CDATA, CharacterData, Comment,
Document
, DocumentType, Element, Entity, ProcessingInstruction, Text都實(shí)現(xiàn)了Node接口,因此從這些對(duì)象上也可以使用asXML() 方法。
?
4、獲取xml文檔的根元素
Element rootElement =
document
.getRootElement()
?
5、有關(guān)Element的最常用到的api
attributeValue(
String
name) :獲取元素
String
值。
elementIterator() :返回元素的所有子元素的Iterator迭代器。
elements() :返回元素包含所有子元素List。
getParent() :獲取父元素Element。
getPath() :獲取自己的xpath。
detach() :移除自己。
getName() :獲取節(jié)點(diǎn)的名稱。
selectNodes(
String
xpathExpression) :通過(guò)XPATH獲取節(jié)點(diǎn)。
selectSingleNode(
String
xpathExpression) :通過(guò)XPATH獲取一個(gè)節(jié)點(diǎn)。
getDocument() :作為一個(gè)
Document
返回。
?
有空在繼續(xù)添加。
?
?
本文出自 “
熔 巖
” 博客,請(qǐng)務(wù)必保留此出處
http://lavasoft.blog.51cto.com/62575/78450