無憂無鹵

          鳥在籠中,恨關羽不能張飛;人處世上,要八戒更需悟空

          用dom4j建立,修改XML文檔,并解決格式化輸出和中文問題[轉自csdn]

          <books>
            <!--This is a test for dom4j, holen, 2004.9.11-->
            <book show="no">
                 <title>Dom4j Tutorials</title>
            </book>
            <book show="no">
                 <title>Lucene Studing</title>
            </book>
            <book show="no">
                 <title>Lucene in Action</title>
            </book>
            <owner>O'Reilly</owner>
          </books>

           ---------------------

          package com.holen.dom4j;

          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;

          /**

           * @author Holen Chen

           */

          public class Dom4jDemo {

             

              public Dom4jDemo() {

              }

             

              /**

               * 建立一個XML文檔,文檔名由輸入參數決定

               * @param filename 需建立的文件名

               * @return 返回操作結果, 0表失敗, 1表成功

               */

              public int createXMLFile(String filename){

                 /** 返回操作結果, 0表失敗, 1表成功 */

                 int returnValue = 0;

                 /** 建立document對象 */

                  Document document = DocumentHelper.createDocument();

                 /** 建立XML文檔的根books */

                  Element booksElement = document.addElement("books");

                 /** 加入一行注釋 */

                  booksElement.addComment("This is a test for dom4j, holen, 2004.9.11");

                 /** 加入第一個book節點 */

                  Element bookElement = booksElement.addElement("book");

                 /** 加入show參數內容 */

                  bookElement.addAttribute("show","yes");

                 /** 加入title節點 */

                  Element titleElement = bookElement.addElement("title");

                 /** title設置內容 */

                  titleElement.setText("Dom4j Tutorials");

                

                 /** 類似的完成后兩個book */

                  bookElement = booksElement.addElement("book");

                  bookElement.addAttribute("show","yes");

                  titleElement = bookElement.addElement("title");

                  titleElement.setText("Lucene Studing");

                  bookElement = booksElement.addElement("book");

                  bookElement.addAttribute("show","no");

                  titleElement = bookElement.addElement("title");

                  titleElement.setText("Lucene in Action");

                

                 /** 加入owner節點 */

                  Element ownerElement = booksElement.addElement("owner");

                  ownerElement.setText("O'Reilly");

                

                 try{

                     /** document中的內容寫入文件中 */

                     XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)));

                     writer.write(document);

                     writer.close();

                     /** 執行成功,需返回1 */

                     returnValue = 1;

                  }catch(Exception ex){

                     ex.printStackTrace();

                 }

                        

                  return returnValue;

              }

             

              /**

               * 修改XML文件中內容,并另存為一個新文件

               * 重點掌握dom4j中如何添加節點,修改節點,刪除節點

               * @param filename 修改對象文件

               * @param newfilename 修改后另存為該文件

               * @return 返回操作結果, 0表失敗, 1表成功

               */

              public int ModiXMLFile(String filename,String newfilename){

                 int returnValue = 0;

                 try{

                     SAXReader saxReader = new SAXReader();   

                     Document document = saxReader.read(new File(filename));

                     /** 修改內容之一:如果book節點中show參數的內容為yes,則修改成no */

                     /** 先用xpath查找對象 */

                     List list = document.selectNodes("/books/book/@show" );   

                     Iterator iter = list.iterator();

                     while(iter.hasNext()){

                         Attribute attribute = (Attribute)iter.next();

                         if(attribute.getValue().equals("yes")){

                             attribute.setValue("no");

                         }  

                     }

                    

                     /**

                      * 修改內容之二:owner項內容改為Tshinghua

                      * 并在owner節點中加入date節點,date節點的內容為2004-09-11,還為date節點添加一個參數type

                      */

                     list = document.selectNodes("/books/owner" );

                     iter = list.iterator();

                     if(iter.hasNext()){

                         Element ownerElement = (Element)iter.next();

                         ownerElement.setText("Tshinghua");

                         Element dateElement = ownerElement.addElement("date");

                         dateElement.setText("2004-09-11");

                         dateElement.addAttribute("type","Gregorian calendar");

                     }

                    

                     /** 修改內容之三:title內容為Dom4j Tutorials,則刪除該節點 */

                     list = document.selectNodes("/books/book");

                     iter = list.iterator();

                     while(iter.hasNext()){

                         Element bookElement = (Element)iter.next();

                         Iterator iterator = bookElement.elementIterator("title");

                         while(iterator.hasNext()){

                             Element titleElement=(Element)iterator.next();

                             if(titleElement.getText().equals("Dom4j Tutorials")){

                                bookElement.remove(titleElement);

                            }

                         }

                     }          

                    

                     try{

                         /** document中的內容寫入文件中 */

                         XMLWriter writer = new XMLWriter(new FileWriter(new File(newfilename)));

                         writer.write(document);

                         writer.close();

                         /** 執行成功,需返回1 */

                         returnValue = 1;

                     }catch(Exception ex){

                         ex.printStackTrace();

                     }

                    

                  }catch(Exception ex){

                     ex.printStackTrace();

                 }

                  return returnValue;

              }

             

              /**

               * 格式化XML文檔,并解決中文問題

               * @param filename

               * @return

               */

              public int formatXMLFile(String filename){

                 int returnValue = 0;

                 try{

                     SAXReader saxReader = new SAXReader();   

                     Document document = saxReader.read(new File(filename));

                     XMLWriter output = null;

                     /** 格式化輸出,類型IE瀏覽一樣 */

                     OutputFormat format = OutputFormat.createPrettyPrint();

                     /** 指定XML字符集編碼 */

                     format.setEncoding("GBK");

                     output = new XMLWriter(new FileWriter(new File(filename)),format);

                     output.write(document);

                     output.close();       

                     /** 執行成功,需返回1 */

                     returnValue = 1;      

                  }catch(Exception ex){

                     ex.printStackTrace();

                 }

                  return returnValue;

              }

              public static void main(String[] args) {

                  Dom4jDemo temp = new Dom4jDemo();

                  System.out.println(temp.createXMLFile("d://holen.xml"));

                  System.out.println(temp.ModiXMLFile("d://holen.xml","d://holen2.xml"));

                  System.out.println(temp.formatXMLFile("d://holen2.xml"));

              }

          }



          Trackback: http://tb.donews.net/TrackBack.aspx?PostId=96062

          posted on 2008-05-14 08:40 beyond 閱讀(447) 評論(0)  編輯  收藏


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


          網站導航:
           

          導航

          <2008年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          統計

          常用鏈接

          留言簿(1)

          隨筆檔案

          相冊

          搜索

          最新評論

          • 1.?re: 近期任務
          • 大哥 等著你的drools5翻譯呢 drools4把我搞死了 如果你有關于drools4的心得的話請指教 感覺自己使用的不是很好 望賜教 QQ:53816565 謝謝
          • --sunnidy
          • 2.?re: Mysql遷移到Oracle
          • 不錯,看樣子支持大多數數據庫遷移到oracle,不知道是否支持從oracle轉出?
          • --FastUnit

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 稻城县| 儋州市| 郑州市| 米泉市| 旅游| 广宗县| 内乡县| 肃南| 常熟市| 永修县| 桐庐县| 瓦房店市| 昌宁县| 曲松县| 通海县| 江门市| 霞浦县| 禹城市| 德州市| 商都县| 正定县| 定兴县| 东光县| 丁青县| 婺源县| 交城县| 思南县| 鱼台县| 长兴县| 英吉沙县| 崇信县| 泰宁县| 洛浦县| 吉水县| 宜良县| 石河子市| 福清市| 蕉岭县| 庆阳市| 和静县| 焉耆|