一、創建一個簡單的xml文件:
/*
* @param filename 需建立的文件名
*
* @return 返回操作結果, 0表失敗, 1表成功
*/
public static int createXMLFile(String filename) {
/** 返回操作結果, 0表失敗, 1表成功 */
int returnValue = 0;
/** 建立document文檔對象 */
Document document = DocumentHelper.createDocument();
/** 建立XML文檔的根節點books */
Element booksElement = document.addElement("books");
/** 在根節點<books>下加入一行註釋 */
booksElement.addComment("This is a test for dom4j, holen2009.9.11");
/** 加入第一個book子節點(即第一本書) */
Element bookElement = booksElement.addElement("book");
/** 加入show屬性內容 */
bookElement.addAttribute("show", "yes");
/** 在<book>節點下加入title節點 */
Element titleElement = bookElement.addElement("title");
/** 爲title設置內容 */
titleElement.setText("Dom4j Tutorials");
/** 類似的完成後兩個book */
bookElement = booksElement.addElement("java");
bookElement.addAttribute("show", "yes");
titleElement = bookElement.addElement("title");
titleElement.setText("java編程思想中文版");
bookElement = booksElement.addElement("C語言");
bookElement.addAttribute("show", "no");
bookElement.addAttribute("name", "C#入門經典");
titleElement = bookElement.addElement("title");
titleElement.setText("C#編程思想中文版");
/** 加入owner節點 */
Element ownerElement = booksElement.addElement("owner");
ownerElement.setText("O'Reilly");
try {
/** 將document中的內容寫入文件中 */
XMLWriter writer = null;
/** 格式化輸出,類型IE瀏覽一樣 */
OutputFormat format = OutputFormat.createCompactFormat();
/** 指定XML編碼 */
format.setEncoding("UTF-8");
writer = new XMLWriter(new FileOutputStream(new File(filename)),
format);
// writer = new XMLWriter(new FileOutputStream(new File(filename)));
// 把整個文檔寫入文件
writer.write(document);
writer.close();
/** 執行成功,需返回1 */
returnValue = 1;
} catch (Exception ex) {
ex.printStackTrace();
}
return returnValue;
}
輸出的xml文件:
<?xml version="1.0" encoding="UTF-8"?> <books> <!--This is a test for dom4j, holen2009.9.11--> <book show="yes"> <title>Dom4j Tutorials</title> </book> <java show="yes"> <title>java編程思想中文版</title> </java> <C語言 show="no" name="C#入門經典"> <title>C#編程思想中文版</title> </C語言> <owner>O'Reilly</owner> </books>
建立文檔步驟及常用方法:
1、建立document文檔對象-->DocumentHelper.createDocument();
2、建立XML文檔的根節點-->調用Document對象的addElement("elementName")方法
3、加入一行註釋-->Element對象的addComment("comment Text")方法
4、在根節點下建立子子節點-->Element對象的addElement("elementName");
5、加入屬性內容-->如:<book name="java" show="yes">使用Element對象的addAttribute("name", "value");
6、爲節點設置內容-->如:<title>內容<itle>,使用Element的setText("內容")方法
7、將document中的內容寫入文件中-->使用XMLWriter的writer方法,通過構造方法XMLWriter(OutputStream out, OutputFormat format)
獲得XMLWriter對象.OutputFormat爲格式化輸出對象(有兩種格式),默認是使用CompactFormat,輸出的內容不會換行,
若要使用換行,需要通過OutputFormat.createCompactFormat()獲取.還可以設置字符值編碼,調用OutputFormat的setEncoding("utf-8")方法.
二、讀取xml文檔.
public static void ReadXml(String filename) {
SAXReader saxReader = new SAXReader();
Document document = null;
try {
document = saxReader.read(
// 搜索當前線程classpath下的文件
Thread.currentThread().getContextClassLoader()
.getResourceAsStream(filename));
} catch (DocumentException e) {
e.printStackTrace();
}
// xpath查找對象
List list = document.selectNodes("//java");
for (Iterator iter = list.iterator(); iter.hasNext();) {
Element element = (Element) iter.next();
System.out.println(element.attributeValue("show"));
List titlelist = element.selectNodes("title");
Element title = (Element) titlelist.get(0);
System.out.println(title.getText());
}
}
讀取文檔步驟及常用方法:
1、通過SAXReader對象的read(InputStream in)方法獲取整個文檔(以樹的結構加載到內存中).
2、通過Document對象selectNodes("//java")方法獲取指定的節點,並返回List對象,而List裏裝的Element對象.
3、通過遍歷的方式讀取指定的節點(Element)列表,通過調用Element的方法可獲取此節點的屬性值或Text值.
4、你可以定義一個POJO的java類封裝Element的屬性.
三、dom4j在實際項目中的應用
附件還帶有修改的方法