dom4j創建解析xml

          Posted on 2009-07-04 16:55 胡娟 閱讀(681) 評論(0)  編輯  收藏 所屬分類: JAVA
          所需要的jar

            dom4j-1.6.1.jar

          所要解析和創建的xml文檔樣式

          <?xml version="1.0" encoding="gb2312"?>
          <students>
              
          <student id="1">
                  
          <name>hujuan</name>
                  
          <age>24</age>
              
          </student>
              
          <student id="2">
                  
          <name>fankai</name>
                  
          <age>24</age>
              
          </student>
          </students>

          創建xml過程

          package com.hujuan.xml;

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

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


          public class CreateXml {

              
          public void createXml(){
                  
          //使用DocumentHelper類創建一個文檔實例。DocumentHelper是生成xml文檔節點的dom4j API工廠類
                  Document document = DocumentHelper.createDocument();
                  
          //使用addElement()方法創建根元素students,addElement()用于向xml文檔中增加元素
                  Element students = document.addElement("students");
                  
          //添加注釋
                  students.addComment("students 節點");
                  
          //在students節點下添加子節點student
                  Element student = students.addElement("student");
                  
          //給student元素添加屬性
                  student.addAttribute("id""1");
                  Element name 
          = student.addElement("name");
                  Element age 
          = student.addElement("age");
                  
          //給元素設置元素的文本
                  name.setText("hujuan");
                  age.setText(
          "24");
                  
                  Element student2 
          = students.addElement("student");
                  
          //給student元素添加屬性
                  student2.addAttribute("id""2");
                  Element name2 
          = student2.addElement("name");
                  Element age2 
          = student2.addElement("age");
                  
          //給元素設置元素的文本
                  name2.setText("fankai");
                  age2.setText(
          "24");
                  
                  
                  
          try {
                      OutputFormat format 
          = new OutputFormat("  ",true); 
                      format.setEncoding(
          "GB2312");
                      
          //輸出創建的xml文檔
                      XMLWriter output = new XMLWriter(format);
                      FileWriter    fw 
          = new FileWriter(new File("src/bb.xml"));
                      output.write(document);
                      
                      output.close();
                  } 
          catch (IOException e) {
                      e.printStackTrace();
                  }
                  
          //在元素中使用addProcessingInstruction()方法增加一個處理指令
                  
          //students.addProcessingInstruction(arg0, arg1)
                  
                  
              }
          }

          解析xml過程

          package com.hujuan.xml;

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

          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;

          public class ReadXml {
              
              
          public void readXml(){
                  
          //使用SAXReader解析XMl
                  SAXReader saxReader = new SAXReader();
                  File file 
          = new File("src/student.xml");
                  
          try {
                      Document document 
          = saxReader.read(file);
                      Element students 
          = document.getRootElement();
                      List list 
          = students.elements("student");
                      
          for(Iterator it = list.iterator();it.hasNext();){
                          Element student 
          = (Element)it.next();
                          
          //獲得得元素的屬性值
                          String id = student.attributeValue("id");
                          System.out.println(id);
                          
          //獲得子元素的屬性
                          String name = student.elementText("name");
                          System.out.println(name);
                          String age 
          = student.elementText("age");
                          System.out.println(age);
                          
          //student.removeChild(name);
                      }
                          
          try {
                              OutputFormat format 
          = new OutputFormat("  ",true); 
                              format.setEncoding(
          "GB2312");
                              
          //輸出創建的xml文檔
                              XMLWriter output = new XMLWriter(format);
                              FileWriter    fw 
          = new FileWriter(new File("src/bb.xml"));
                              output.write(document);
                              
                              output.close();
                          } 
          catch (UnsupportedEncodingException e) {
                              e.printStackTrace();
                          } 
          catch (IOException e) {
                              e.printStackTrace();
                          }
                      
                  } 
          catch (DocumentException e) {
                      e.printStackTrace();
                  }
              }
              
          }

          測試用例

          package junit.test;

          import org.junit.Test;

          import com.hujuan.xml.CreateXml;
          import com.hujuan.xml.ReadXml;


          public class XmlTest {

              @Test
              
          public void createXml(){
                  CreateXml createXml 
          = new CreateXml();
                  createXml.createXml();
              }
              
              @Test
              
          public void readXml(){
                  ReadXml readXml 
          = new ReadXml();
                  readXml.readXml();
              }
          }

          補充

          添加文檔類型說明

          document.addDocType("bb",null,"file://Dtds/src/bb.dtd");
          輸出
          <!DOCTYPE bb SYSTEM "file://Dtds/src/bb.dtd"

          修改name節點的值

          for(Iterator ite = studentList.iterator();ite.hasNext();){
              Element EName 
          = (Element)ite.next();
                  EName.setText(
          "kay");
          }

          修改student屬性id的值

          //獲得student的屬性
          Attribute att = student.attribute("id");
          //修改student的屬性值
          att.setValue("3");

          刪除studentid屬性
          //刪除student的屬性
          student.remove(att);

          刪除student節點

          //刪除student節點
          students.remove(student);

          posts - 28, comments - 5, trackbacks - 0, articles - 1

          Copyright © 胡娟

          主站蜘蛛池模板: 甘肃省| 邓州市| 扶沟县| 蒙城县| 南溪县| 宜宾县| 文水县| 永昌县| 宁安市| 习水县| 桦川县| 津市市| 江油市| 缙云县| 尼玛县| 霸州市| 桦川县| 衡水市| 彰化县| 土默特右旗| 甘泉县| 清镇市| 贵州省| 宿州市| 江门市| 新绛县| 呼伦贝尔市| 泊头市| 娄底市| 郎溪县| 淳化县| 武穴市| 深泽县| 冕宁县| 辽源市| 蓝山县| 泸定县| 克什克腾旗| 韶山市| 永福县| 周至县|