dom4j創(chuàng)建解析xml

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

            dom4j-1.6.1.jar

          所要解析和創(chuàng)建的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>

          創(chuàng)建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類創(chuàng)建一個(gè)文檔實(shí)例。DocumentHelper是生成xml文檔節(jié)點(diǎn)的dom4j API工廠類
                  Document document = DocumentHelper.createDocument();
                  
          //使用addElement()方法創(chuàng)建根元素students,addElement()用于向xml文檔中增加元素
                  Element students = document.addElement("students");
                  
          //添加注釋
                  students.addComment("students 節(jié)點(diǎn)");
                  
          //在students節(jié)點(diǎn)下添加子節(jié)點(diǎn)student
                  Element student = students.addElement("student");
                  
          //給student元素添加屬性
                  student.addAttribute("id""1");
                  Element name 
          = student.addElement("name");
                  Element age 
          = student.addElement("age");
                  
          //給元素設(shè)置元素的文本
                  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");
                  
          //給元素設(shè)置元素的文本
                  name2.setText("fankai");
                  age2.setText(
          "24");
                  
                  
                  
          try {
                      OutputFormat format 
          = new OutputFormat("  ",true); 
                      format.setEncoding(
          "GB2312");
                      
          //輸出創(chuàng)建的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()方法增加一個(gè)處理指令
                  
          //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");
                              
          //輸出創(chuàng)建的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();
              }
          }

          補(bǔ)充

          添加文檔類型說明

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

          修改name節(jié)點(diǎn)的值

          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節(jié)點(diǎn)

          //刪除student節(jié)點(diǎn)
          students.remove(student);

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

          Copyright © 胡娟

          主站蜘蛛池模板: 嵊泗县| 科技| 泰宁县| 静海县| 繁峙县| 沙雅县| 元阳县| 仙游县| 亚东县| 普洱| 安福县| 炉霍县| 比如县| 清原| 泰州市| 上思县| 喜德县| 田阳县| 简阳市| 正阳县| 儋州市| 邵阳县| 江阴市| 武安市| 安岳县| 扬州市| 崇文区| 德阳市| 连江县| 渭源县| 新泰市| 于田县| 遂平县| 沙田区| 兴文县| 阿勒泰市| 平远县| 吉木乃县| 四子王旗| 新余市| 古蔺县|