1.
讀取並解析xml文件:
讀寫xml文件主要依賴於org.dom4j.io包,其中
提供domreader
和saxreader
兩類不同方式,而呼叫方式是一樣的。這就是依靠介面的好處。
//從檔案讀取
xml,輸入檔名,返回
xml文件
publicdocument
read(string
filename)throwsmalformedurlexception,
documentexception
其中,reader的read方法是過載的,可以從inputstream, file, url等多種不同的源來讀取。得到的document物件就帶表了整個xml。
根據本人自己的經驗,讀取的字元編碼是按照xml檔案頭定義的編碼來轉換。如果遇到亂碼問題,注意要把各處的編碼名稱保持一致即可。2.
取得root節點
讀取後的第二步,就是得到root節點。熟悉xml的人都知道,一切xml分析都是從root元素開始的。
publicelement
getrootelement(document
doc)
2.2訪問節點
list childrenlist = elt.elements();
list childrenlist = elt.elements("student");
element eltchild = elt.element("student");
2.3.訪問屬性
list attrlist = elt.attributes();
attribute attr = elt.attribute("sn");
string attrvalue = elt.attributevalue("sn");
2.4.刪除元素和屬性
element eltstu = root.element("student");
root.remove(eltstu);
etl.remove(elt.attribute("sn"));
3.遍歷xml樹
dom4j提供至少3種遍歷節點的方法:
1) 列舉(iterator)
//列舉所有子節點
for(
iteratori=
root.elementiterator();
i.hasnext();
)
// 列舉名稱為
foo的節點
for(
iteratori=
root.elementiterator("
foo"
);i.hasnext();)
// 列舉屬性
for(
iteratori=
root.attributeiterator();
i.hasnext();
)2)遞迴
遞迴也可以採用iterator作為列舉手段,但文件中提供了另外的做法
publicvoidtreewalk()publicvoidtreewalk(element
element)
else
}
}
3) visitor模式
最令人興奮的是dom4j對visitor的支援,這樣可以大大縮減**量,並且清楚易懂。了解設計模式的人都知道,visitor是gof設計模式之一。其主要原理就是兩種類互相保有對方的引用,並且一種作為visitor去訪問許多visitable。我們來看dom4j中的visitor模式(快速文件中沒有提供)
只需要自定乙個類實現visitor介面即可。
publicclassmyvisitorextendsvisitorsupport
publicvoidvisit(attribute
attr)
}
呼叫:root.accept(new myvisitor())
visitor介面提供多種visit()的過載,根據xml不同的物件,將採用不同的方式來訪問。上面是給出的element和attribute的簡單實現,一般比較常用的就是這兩個。visitorsupport是dom4j提供的預設介面卡,visitor介面的default adapter模式,這個模式給出了各種visit(*)的空實現,以便簡化**。
注意,這個visitor是自動遍歷所有子節點的。如果是root.accept(myvisitor),將遍歷子節點。我第一次用的時候,認為是需要自己遍歷,便在遞迴中呼叫visitor,結果可想而知。
4. xpath支援
dom4j對xpath有良好的支援,如訪問乙個節點,可直接用xpath選擇。
publicvoidbar(document
document)
例如,如果你想查詢
xhtml
publicvoidfindlinks(document
document)throwsdocumentexception
}
5. 字串與
xml的轉換
有時候經常要用到字串轉換為
xml或反之,
// xml
轉字串
document
document
=...;
string
text
=document.asxml();
// 字串轉
xml
string
text
= "james";
document
document
=documenthelper.parsetext(text);
6 用xslt
轉換xml
publicdocument
styledocument(
document
document,
string
stylesheet
)throwsexception
7. 建立xml
一般建立xml是寫檔案前的工作,這就像stringbuffer一樣容易。
publicdocument
createdocument()
8. 檔案輸出
乙個簡單的輸出方法是將乙個document或任何的node通過write方法輸出
filewriterout=newfilewriter( "foo.xml"
);
document.write(out);
如果你想改變輸出的格式,比如美化輸出或縮減格式,可以用publicvoidwrite(documentxmlwriter
類
document)throwsioexception
dom4j解析xml檔案
一 利用dom4j建立乙個內容如下的xml檔案sqlmapconfig.xml 步驟 1.建立乙個輸出流,指定建立的sqlmapconfig.xml檔案的位置 outputstream outputstream os new fileoutputstream d sqlmapconfig.xml 2...
dom4j解析XML檔案
dom4j解析xml檔案 匯入dom4j.jar包 建立xml檔案 xmlwriter writer null 宣告寫xml的物件 outputformat format outputformat.createprettyprint format.setencoding utf 8 設定xml檔案的...
dom4j解析XML檔案
匯入dom4j.jar包 建立xml檔案 xmlwriter writer null 宣告寫xml的物件 outputformat format outputformat.createprettyprint format.setencoding utf 8 設定xml檔案的編碼格式 string f...