dom4j創建解析xml

          Posted on 2009-07-04 16:55 胡娟 閱讀(672) 評論(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 © 胡娟

          主站蜘蛛池模板: 民和| 莒南县| 博白县| 沅江市| 苗栗市| 武乡县| 原阳县| 迁西县| 兴山县| 阜平县| 东源县| 三河市| 涡阳县| 砀山县| 太和县| 峡江县| 开化县| 巴林右旗| 五河县| 庄河市| 黔南| 普格县| 根河市| 四子王旗| 唐海县| 中方县| 肇州县| 九龙县| 河间市| 许昌市| 中宁县| 沁源县| 苍山县| 青神县| 天津市| 息烽县| 瓮安县| 沙湾县| 天祝| 兴隆县| 凤山市|