jdom創建解析xml

          Posted on 2009-07-03 17:28 胡娟 閱讀(387) 評論(0)  編輯  收藏 所屬分類: JAVA

          所需要jiar

            Jdom.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.IOException;
          import java.util.Iterator;
          import java.util.List;

          import org.jdom.Document;
          import org.jdom.Element;
          import org.jdom.JDOMException;
          import org.jdom.input.SAXBuilder;

          public class ReadXML {
              
              
          public void readXml(String fileName){
                  
          //創建builder實例,這里的false表示使用默認的解析器
                  SAXBuilder builder = new SAXBuilder(false);
                  
                  
          try {
                      
          //加載xml
                      Document document = builder.build(fileName);
                      
          //獲得根元素
                      Element studentsElement = document.getRootElement();
                      
          //獲得student元素下面的所有元素的子元素
                      List studentList = studentsElement.getChildren("student");
                      
          //循環list集合
                      for(Iterator it = studentList.iterator();it.hasNext();){
                          Element student 
          = (Element)it.next();
                          
          //獲得得元素的屬性
                          String id = student.getAttributeValue("id");
                          System.out.println(id);
                          
          //獲得子元素的屬性
                          String name = student.getChildTextTrim("name");
                          System.out.println(name);
                          String age 
          = student.getChild("age").getText();
                          System.out.println(age);
                      }
                  } 
          catch (JDOMException e) {
                      e.printStackTrace();
                  } 
          catch (IOException e) {
                      e.printStackTrace();
                  }
              }
          }

          創建xml的過程

          package com.hujuan.xml;

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

          import org.jdom.Attribute;
          import org.jdom.Document;
          import org.jdom.Element;
          import org.jdom.output.Format;
          import org.jdom.output.XMLOutputter;

          public class CreateXml {
              
              
          public void createXml(){
              
          //創建一個Document,因為xml文檔必須一直有一個唯一的根元素,所以Document將Element放在它的構造器中
              Element studentsElement = new Element("students");
              Document document 
          = new Document(studentsElement);

              
          //添加一個子元素,student節點
              Element student = new Element("student");
              
          //給student節點添加id屬性,值為1
              student.setAttribute(new Attribute("id","1"));
              Element name 
          = new Element("name");
              name.addContent(
          "hujuan");
              student.addContent(name);
              student.addContent(
          new Element("age").addContent("24"));
              studentsElement.addContent(student);
              
              Element student2 
          = new Element("student").setAttribute("id","2");
              
          //添加子元素并設置元素內容
              student2.addContent(new Element("name").setText("fankai"));
              student2.addContent(
          new Element("age").setText("24"));
              studentsElement.addContent(student2);
              
              
          try {
                  
          //將xml輸出到屏幕上
                  XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
                  outputter.output(document, System.out);
                  
          //將xml輸出到文件中
                  FileWriter writer = new FileWriter("src/aa.xml");
                  outputter.output(document, writer);
                  writer.close();
              } 
          catch (IOException e) {
                  e.printStackTrace();
              }
              
              }

          }

          測試用例

          package junit.test;

          import org.junit.Test;

          import com.hujuan.xml.CreateXml;
          import com.hujuan.xml.ReadXML;

          public class XmlTest {

              
          private String fileName = "src/student.xml";
              @Test
              
          public void readXmlTest(){
                  ReadXML readXml 
          = new ReadXML();
                  readXml.readXml(fileName);
              }
              @Test
              
          public void creatXmlTest(){
                  CreateXml createXml 
          = new CreateXml();
                  createXml.createXml();
              }
          }

          調用readXmlTest()方法輸出結果

          1
          hujuan
          24
          2
          fankai
          24

          調用creatXmlTest()方法的輸出結果

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

          修改元素節點的值

          student.getChild("age").setText("22");

          刪除節點

          student.removeChild("name")

          Format 控制輸出文檔的格式

          Format.getCompactFormat() 表示采用緊湊的格式

          Format.getRawFormat() 表示采用原始格式

          Format.getPrettyFormat() 表示采用美化格式,即以兩個空格作為縮進來輸出文檔

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

          Copyright © 胡娟

          主站蜘蛛池模板: 南城县| 横峰县| 蒙城县| 寿光市| 林甸县| 横峰县| 鲜城| 台前县| 百色市| 垫江县| 东台市| 中西区| 瑞昌市| 广灵县| 开平市| 彭州市| 古浪县| 鸡西市| 普陀区| 出国| 平顺县| 平乡县| 永嘉县| 利川市| 河池市| 玛纳斯县| 阿坝县| 洪湖市| 墨竹工卡县| 固安县| 信阳市| 高台县| 郎溪县| 延安市| 孝义市| 巫山县| 中宁县| 来安县| 图片| 呼玛县| 闽侯县|