通過Dom4j創建和讀取xml文件

一、創建一個簡單的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在實際項目中的應用

 

附件還帶有修改的方法

發佈了15 篇原創文章 · 獲贊 3 · 訪問量 2096
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章