xml解析方式2------dom4j

 dom4j是我最喜歡的一套解析組件,操作簡便而且效率高。有了它,dom和sax可以光榮退休了.

下面是dom4j生成xml文件的代碼

package dom4j;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.UnsupportedEncodingException;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class dom4j_writeXML_02 {
 public static void main(String args[]) throws Exception, Exception{
  /**
   * 創建文檔對象
   */
  Document document=DocumentHelper.createDocument();
  /**
   *在文檔對象下增加根節點
   */
  Element root =document.addElement("addressList");
  /**
   * 在每一個節點下增加子節點
   */
  Element linkMan=root.addElement("linkMan");
  
  Element name=linkMan.addElement("name");
  /**
   * 給name節點添加屬性
   */
  name.addAttribute("id", "I am attribute");
  
  Element email=linkMan.addElement("email");
  /**
   * 給name節點設置文本
   */
  name.setText("我是最強的");
  /**
   * 給email節點設置文本
   */
  email.setText("
[email protected]");
  /**
   * 設置漂亮的輸出格式(也可以設置緊湊的輸出格式)
   */
  OutputFormat format = OutputFormat.createPrettyPrint();
  /**
   * 以漂亮的格式,將xml文件輸出到d:\dom4j.xml文件中
   */
  XMLWriter writer = new XMLWriter(
    new FileOutputStream(new File("d:"+File.separator+"dom4j.xml")),format);
  writer.write(document);
 }
}

看看吧,是不是很方便,理解起來也很容易。真的很佩服設計者的技巧,他的addxxx()方法並不是返回空,而是返回一個節點。這樣的話,我們就可以很容易的在某一個節點下增加子節點。

dom4j的讀取xml能力也很強

package dom4j;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

import java.io.*;
import java.util.Iterator;

public class dom4j_ReadXML_01 {
 public static void main(String args[]) throws DocumentException, Exception{
  /**
   * 創建一個解析器
   */
  SAXReader reader=new SAXReader();
  /**
   * 解析xml文檔
   */
  Document document=reader.read("d:"+File.separator+"dom4j.xml");
  /**
   * 獲得文本的根節點
   */
  Element root=document.getRootElement();
  /**
   * 獲得根節點下面的全部子節點
   */
  Iterator linkMans=root.elementIterator();
  /**
   * 遍歷節點輸出
   */
  while(linkMans.hasNext()){
   Element linkMan=(Element)linkMans.next();
   System.out.println(linkMan.elementText("name"));
   Element name=linkMan.element("name");
   System.out.println(name.attribute("id").getName()+"="+name.attributeValue("id"));
   System.out.println(linkMan.elementText("email"));
  }
 }
}

 

老婆要求加的鏈接>>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章