DOM4J生成、解析XML示例代碼

em7 9年前發布 | 1K 次閱讀 Java XML

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/**

  • dom4j生成與解析XML文檔
  • */
    public classDom4jDemo {

    /**

    • 利用dom4j進行xml文檔的寫入操作 */
      public void createXml(File file) {

      // XML 聲明 <?xmlversion="1.0" encoding="UTF-8"?> 自動添加到 XML文檔中

      // 使用DocumentHelper類創建文檔實例(生成 XML文檔節點的 dom4jAPI工廠類)
      Document document =DocumentHelper.createDocument();

      // 使用addElement()方法創建根元素employees(用于向 XML 文檔中增加元素)
      Element root =document.addElement("employees");

      // 在根元素中使用 addComment()方法添加注釋"AnXML Note"
      root.addComment("An XMLNote");

      // 在根元素中使用addProcessingInstruction()方法增加一個處理指令
      root.addProcessingInstruction("target","text");

      // 在根元素中使用 addElement()方法增加employee元素。
      Element empElem =root.addElement("employee");

      // 使用 addAttribute()方法向employee元素添加id和name屬性
      empElem.addAttribute("id","0001");
      empElem.addAttribute("name","wanglp");

      // 向employee元素中添加sex元素
      Element sexElem =empElem.addElement("sex");
      // 使用setText()方法設置sex元素的文本
      sexElem.setText("m");

      // 在employee元素中增加age元素 并設置該元素的文本。
      Element ageElem =empElem.addElement("age");
      ageElem.setText("25");

      // 在根元素中使用 addElement()方法增加employee元素。
      Element emp2Elem =root.addElement("employee");

      // 使用 addAttribute()方法向employee元素添加id和name屬性
      emp2Elem.addAttribute("id","0002");
      emp2Elem.addAttribute("name","fox");

      // 向employee元素中添加sex元素
      Element sex2Elem =emp2Elem.addElement("sex");
      // 使用setText()方法設置sex元素的文本
      sex2Elem.setText("f");

      // 在employee元素中增加age元素 并設置該元素的文本。
      Element age2Elem =emp2Elem.addElement("age");
      age2Elem.setText("24");

      // 可以使用 addDocType()方法添加文檔類型說明。
      //document.addDocType("employees", null,"file://E:/Dtds/dom4j.dtd");
      // 這樣就向 XML 文檔中增加文檔類型說明:
      // <!DOCTYPE employees SYSTEM"file://E:/Dtds/dom4j.dtd">
      // 如果文檔要使用文檔類型定義(DTD)文檔驗證則必須有Doctype。

      try {

       XMLWriter output = newXMLWriter(new FileWriter(file));  
       output.write(document);  
       output.close();  
      

      } catch (IOException e) {

       System.out.println(e.getMessage());  
      

      }
      }

      /**

    • 利用dom4j進行xml文檔的讀取操作 */
      public void parserXml(File file) {

      Document document = null;

      // 使用 SAXReader 解析 XML 文檔catalog.xml:
      SAXReader saxReader = new SAXReader();

      try {

       document = saxReader.read(file);  
      

      } catch (DocumentException e) {

       e.printStackTrace();  
      

      }
      // 將字符串轉為XML
      // document = DocumentHelper.parseText(fileString);

      // 獲取根節點
      Element root =document.getRootElement();
      // 打印節點名稱
      System.out.println("<" +root.getName() + ">");

      // 獲取根節點下的子節點遍歷
      Iterator<?> iter =root.elementIterator("employee");
      // 遍歷employee節點
      while (iter.hasNext()) {

       // 獲取當前子節點  
       Element empEle = (Element)iter.next();  
       System.out.println("<"+ empEle.getName() + ">");  
      
       // 獲取當前子節點的屬性遍歷  
       Iterator<?> attrList = empEle.attributeIterator();  
       while (attrList.hasNext()) {  
           Attribute attr = (Attribute)attrList.next();  
          System.out.println(attr.getName() + "=" + attr.getValue());  
       }  
      
       // 遍歷employee節點下所有子節點  
       Iterator<?> eleIte =empEle.elementIterator();  
       while (eleIte.hasNext()) {  
           Element ele = (Element)eleIte.next();  
          System.out.println("<" + ele.getName() + ">" +ele.getTextTrim());  
       }  
      
       // 獲取employee節點下的子節點sex值  
       // String sex =empEle.elementTextTrim("sex");  
       //System.out.println("sex:" + sex);  
      
      

      }
      System.out.println("</" +root.getName() + ">");
      } </pre>

      public static void main(String[] args) {

      Dom4jDemo dom4j = new Dom4jDemo();
      File file = newFile("e:/dom4j.xml");
      // dom4j.createXml(file);

      dom4j.parserXml(file);

      }
      } </pre>

 本文由用戶 em7 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!