Java學習

          java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已經搬家了,新的地址是 http://www.javaly.cn 如果有對文章有任何疑問或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂園)指出,我會盡力幫助解決。一起進步

           

          dom4j(Java code)

          import java.io.File;
          import java.io.FileWriter;
          import java.util.Iterator;
          import java.util.List;
          import org.dom4j.Attribute;import org.dom4j.Document;
          import org.dom4j.DocumentHelper;
          import org.dom4j.Element;
          import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;
          import org.dom4j.io.XMLWriter;

          publicclass Dom4jDemo {
             
             
          publicboolean createXML(String fileName){
                 
          boolean isOk=false;
                 
          //建立document對象
                  Document doc= DocumentHelper.createDocument();
                 
          //建立XML文檔的根books
                  Element students= doc.addElement("students");
                  students.addComment(
          "This is a test for dom4j");//加入一行注釋
                  /**加入第一個student節點*/
                  Element student
          = students.addElement("student");//加入第一個student節點
                  student.addAttribute("value","god");//加入value屬性和值
                  Element name= student.addElement("name");//加入name節點
                  name.setText("finina");//為name設置值
                  Element age=student.addElement("age");//加入age節點
                  age.setText("25");//
          為age設置值
                  Element sex=student.addElement("sex");//加入sex節點
                  sex.setText("male");//為sex設置值
                  /**加入第二個student節點*/
                  student
          = students.addElement("student");
                  student.addAttribute(
          "value","cat");
                  name
          = student.addElement("name");
                  name.setText(
          "fly");
                  age
          =student.addElement("age");
                  age.setText(
          "17");
                  sex
          =student.addElement("sex");
                  sex.setText(
          "female");
                 
          /**加入team節點*/
                  Element team
          =students.addElement("team");
                  team.addText(
          "05093A");
                 
          /**
                   *將doc中的內容寫入xml文件中
                   *
          */
                 
          try{
                      OutputFormat format
          = OutputFormat.createPrettyPrint();//設置格式
                      format.setEncoding("GBK");//必要,否則無法解析中文
                     
          //輸出為文件
                      XMLWriter writer=new XMLWriter(new FileWriter(fileName),format);
                      wr
          iter.write(doc);
                      writer.flush();
                     //
                      isOk=true;
                  }
          catch(Exception e){
                      e.printStackTrace();
                  }
                 
          return isOk;
              }

             
          publicboolean modifigXML(String oldFileName,String newFileName){
                 
          boolean isOk=false;
                 
          try{
                      SAXReader reader
          =new SAXReader();//創建SAX閱讀器
                      Document doc= reader.read(new File(oldFileName));//將所有文件內容讀取生存Document對象
                      /**修改內容之一: 如果student節點中value屬性的內容為god,則修改成king
                       *因為做人不能太囂張
                      
          */
                      List list
          = doc.selectNodes("/students/student/@value");//搜索出所有位于students節點下的student節點中的value屬性位置放入集合中
                      Iterator iter= list.iterator();//加載迭代器
                     
          //迭代集合
                      while(iter.hasNext()){
                          Attribute attr
          = (Attribute)iter.next();
                         
          if(attr.getValue().equals("god"))//比對值是否相等
                              attr.setValue("king");//設置值
                      }

                      list
          = doc.selectNodes("/students/team");//搜索出所有位于students節點下team節點位置放入集合中
                      iter= list.iterator();//an style="COLOR: #008000">加載迭代器
                      //迭代集合
                      if(iter.hasNext()){
                          Element team
          = (Element)iter.next();
                          team.setText(
          "05084A");//設置值
                          Element teacher= team.addElement("teacher");//添加節點
                          teacher.setText("godfather");//為新的節點設置值
                          teacher.addAttribute("skill","programme");//為新的節點添加屬性
                      }
                     
          /**修改內容之三: 若age內容為17,則刪除該節點
                       *未成年人需要被保護...
                      
          */
                      list
          = doc.selectNodes("/students/student");//搜索出所有位于students節點下的student節點位置放入集合中
                      iter= list.iterator();//加載迭代器
                     
          //迭代集合
                      while(iter.hasNext()){
                          Element elem
          = (Element)iter.next();
                          Iterator iterElem
          = elem.elementIterator("age");//將該節點下所有的age節點生成一個迭代器
                         
          //迭代集合
                          if(iterElem.hasNext()){
                              Element remTitle
          = (Element)iterElem.next();
                             
          if(remTitle.getText().equals("17"))000">//對比值
                                  elem.remove(remTitle);//移除該節點
                          }
                      }
                     
          //將doc中的內容寫入文件中
                      OutputFormat format= OutputFormat.createPrettyPrint();//設置格式
                      format.setEncoding("GBK");//必要,否則無法解析中文
                      
          //輸出為文件,以上操作只是在內存中修改,需要保存為文件來確認修改
                      XMLWriter writer=new XMLWriter(new FileWriter(newFileName),format);
                      writer.write(doc);
                      writer.flush();
                      isOk
          =true;
                  }
          catch(Exception e){
                      e.printStackTrace();
                  }
                 
          return isOk;
              }
             
          /**
               *the method readXML
              
          */
             
          publicvoid readXML(String fileName){
                 
          try{
                      File file
          =new File(fileName);//創建文件對象
                      SAXReader reader=new SAXReader();//創建SAX閱讀器
                      Document doc= reader.read(file);//讀取內容生成Document對象
                      Element root= doc.getRootElement();//取得根節點
                      search(root);//開始遍歷
                  }catch(Exception e){
                      e.printStackTrace();
                  }
              }
             
             
          //遞歸遍歷
              privatevoid search(Element root) {
            Iterator it_element= root.elementIterator();//將根節點下包含的元素組織成一個迭代器
                 
          //迭代
                  while( it_element.hasNext()) {
                      Element element
          = (Element)it_element.next();
                     
          if(!element.getText().equals(""))
                      {
                          System.out.println(element.getName()
          +"節點的值是"+element.getText());
                      }
                     
          else
                      {
                          System.out.println(element.getName()
          +"節點");
                      }
                      Iterator it_attr
          = element.attributeIterator();
                     
          while( it_attr.hasNext()) {
                          Attribute attr
          = (Attribute)it_attr.next();
                         
          if(attr!=null)
                          {
                              System.out.println(element.getName()
          +"節點的屬性"+attr.getName()+"的值是"+ attr.getValue());
                          }
                      }
                      search(element);
          //遞歸調用
                  }
              }
             
          /**
               *the method main
              
          */
             
          publicstaticvoid main(String[] args){
                 
          long start= System.currentTimeMillis();//開始計時
                  Dom4jDemo dom4jDemo=new Dom4jDemo();
                  String fileName
          ="dom4jDemo.xml";
                  String newFileName
          #000000">="new_dom4jDemo.xml";
                  System.out.println(fileName
          +"正在創建中...");
                 
          boolean isOk_create= dom4jDemo.createXML(fileName);
                 
          if(isOk_create) System.out.println(fileName+"創建成功!");
                 
          else System.out.println("創建失敗!請檢查后重新再試!");
                 
                  System.out.println(
          "正在更新中...");
                 
          boolean isOk_modi= dom4jDemo.modifigXML(fileName, newFileName);
                 
          if(isOk_modi) System.out.println("恭喜,更新完成!");
                 
          //
                  System.out.println("正在讀取文件"+fileName+" ...");
                  System.out.println(
          "------------------------------------------------");
                  dom4jDemo.readXML(fileName);
                  System.out.println(
          "------------------------------------------------");
                  System.out.println(fileName
          +"讀取成功!");
                  System.out.println(
          "正在讀取文件"+newFileName+" ...");
                  System.out.println(
          "------------------------------------------------");
                  dom4jDemo.readXML(newFileName);
                  System.out.println(
          "------------------------------------------------");
                  System.out.println(fileName
          +"讀取成功!");
                  System.out.println(
          "一共耗時:"+(System.currentTimeMillis()-start)+"毫秒!");
              }
          }

          posted on 2009-06-19 15:19 找個美女做老婆 閱讀(213) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          公告

          本blog已經搬到新家了, 新家:www.javaly.cn
           http://www.javaly.cn

          常用鏈接

          留言簿(6)

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 阳朔县| 山西省| 金门县| 新巴尔虎右旗| 南丹县| 铜鼓县| 榆中县| 嘉兴市| 弥渡县| 大理市| 潞城市| 高邮市| 泉州市| 清流县| 阿拉善盟| 六盘水市| 炉霍县| 芦山县| 咸宁市| 巢湖市| 鄂温| 措美县| 孟州市| 海盐县| 铜川市| 南汇区| 杂多县| 防城港市| 克什克腾旗| 镇沅| 登封市| 清水县| 德安县| 宣威市| 永靖县| 桓仁| 金昌市| 迭部县| 灵武市| 云龙县| 罗田县|