使用DOM4J操作xml

DOM4j是一個易用的,開源的JAVA操作XML的API,首先要使用的話先現在dom4j的包。

學習DOM4j首先就先來了解下它主要的包

                DOM4j所有的接口都在org.dom4j這個包裏定義着

               org.dom4j.Attribute : Attribute接口定義了XML文件的屬性

               org.dom4j.Branch  : Branch爲能夠包含子節點的節點如XML元素和文檔定義了一個公共行爲

               org.dom4j.CDATA  : CDATA定義了XML CDATA區域

               org.dom4j.CharacterData: CharacterData是一個標識接口,標識基於字符的節點。

               org.dom4j.Comment  : Comment定義了XML註釋的行爲

               org.dom4j.Document : Docement接口定義了XML文檔

               org.dom4j.Element   : Element定義了XML元素

               org.dom4j.ElementHandler: ElementHandler定義了Element對象的處理器

               org.dom4j.ElementPath : 被ElementHandler使用,用於取得當前正在處理的路徑層次信息

               org.dom4j.Entity     : Entity定義XML entity

               org.dom4j.Node :   Node爲所有的dom4j中XML節點定義了多態行爲

               org.dom4j.NodeFilter :  NodeFilter定義了在dom4j節點中產生的一個濾鏡或謂詞的行爲

               org.dom4j.ProcessingInstruction : ProcessingInstruction定義XML處理指令

               org.dom4j.Text   : Test定義了XML文本節點

               org.dom4j.Visitor : Visitor用於實現Visitor模式

               org.dom4j.XPath : XPath在分析一個字符串後會提供一個XPath表達式

 

例子:

1.java寫入xml操作

//使用 DocumentHelper 類創建一個文檔實例。 DocumentHelper 是生成 XML 文檔節點的 dom4j API 工廠類。

 Document _document = DocumentHelper.createDocument();

 XMLWriter writer = null;// 聲明寫XML的對象

//使用 addElement() 方法創建根元素 catalogaddElement() 用於向 XML 文檔中增加元素。

 Element _customer= _root.addElement("定位客戶");

//在 catalog 元素中使用 addComment() 方法添加註釋“An XML catalog”。

 _customer.addComment("An XML catalog");
//爲 元素增加 leveldate 屬性。 
customer.addAttribute("level", "Intermediate");
      customer.addAttribute("date", "December-2001");
//設置元素的文本值
_customer.setText(“值”);
//  System.out.println(_document.asXML());
        
//創建文件目錄
 writer = new XMLWriter(new FileWriter(file), format);
                                writer.write(_document);
                 writer.close();

 

 2.解析xml

使用 SAXReader 解析 XML 文檔 catalog.xml:

SAXReader saxReader = new SAXReader();
 Document document = saxReader.read(inputXml);
1:  讀取並解析XML文檔:
               讀寫XML文檔主要依賴於org.dom4j.io包,提供了DOMReader和SAXReader兩類不同方式,調用方式一樣。
           // 從文件讀取XML,輸入文件名,返回XML文檔
    public Document read(String fileName) throws MalformedURLException, DocumentException {
      
               SAXReader reader = new SAXReader();
 
             Document document = reader.read(new File(fileName));
 
             return document;
        }

2:取得ROOT節點
         如果要讀取一個XML文件,最重要的就是要讀取ROOT節點了,一切分析XML都是從ROOT節點開始。
     
    public Element getRootElement(Document doc){
             return doc.getRootElement();
     }

3:遍歷XML樹,這裏有二種方法
      (1): 枚舉
           // 枚舉所有子節點
    for ( Iterator i = root.elementIterator(); i.hasNext(); ) {
       Element element = (Element) i.next();
       // do something
    }
    // 枚舉名稱爲foo的節點
    for ( Iterator i = root.elementIterator(foo); i.hasNext();) {
       Element foo = (Element) i.next();
       // do something
    }
    // 枚舉屬性
    for ( Iterator i = root.attributeIterator(); i.hasNext(); ) {
       Attribute attribute = (Attribute) i.next();
       // do something
    }

2) :  遞歸
     public void treeWalk() {
       treeWalk(getRootElement());
    }
    public void treeWalk(Element element) {
       for (int i = 0, size = element.nodeCount(); i < size; i++)     {
           Node node = element.node(i);
           if (node instanceof Element) {
              treeWalk((Element) node);
           } else { // do something....
           }
       }
}

4:字符串與XML的轉換
   // XML轉字符串
  Document document = ...;
    String text = document.asXML();
  // 字符串轉XML
    String text = <person></person> <name></name>James ;
    Document document = DocumentHelper.parseText(text);

 6: XML 文件輸出
   FileWriter out = new FileWriter( foo.xml );
    document.write(out)

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