我為人人,人人為我

          PLM,PDM制造業的制勝法寶
          posts - 16, comments - 9, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          Dom4j簡單學習

          Posted on 2007-07-13 21:41 Glen 閱讀(1332) 評論(0)  編輯  收藏 所屬分類: XML相關


          在使用dom4j讀取xml的字符串是出現了不支持中文的問題。xml數據中有中文,在讀取xml的時候總是出現異常(org.dom4j.DocumentException: Error on line -1 of document  : unsupported five or six byte UTF-8 sequence),但是因為卻沒有問題。開始以為dom4j對中文支持有問題,但是后來發現并非開始所想那樣。

           

          Code

          SAXReader objReader = new SAXReader();

          Document objDom = objReader.read(new StringBufferInputStream(strXML));

          查看jdk中對類StringBufferInputStream的注釋:注釋:不推薦使用 StringBufferInputStream 方法。 此類不能將字符正確的轉換為字節。同 JDK 1.1 版中的類似,從一個串創建一個流的最佳方法是采用 StringReader 類。至此才恍然大悟,原來StringBufferInputStream類不支持八字節以上的字符。

           

          Dom4j解析xml方法:

          SAXReader objReader = new SAXReader();

          Document   objDom    = objReader.read(new StringReader(strXML));

          //read 方法有很多重載,具體請看api

          Document   objDom = DocumentHelper.parseText(strTemplateInfo);

           

          Dom4j讀寫xml例程

          package oracle.erp.test;

           

          import java.io.File;

          import java.io.FileOutputStream;

          import java.io.IOException;

           

          import org.dom4j.Document;

          import org.dom4j.DocumentException;

          import org.dom4j.DocumentHelper;

          import org.dom4j.Element;

          import org.dom4j.io.OutputFormat;

          import org.dom4j.io.XMLWriter;

           

          public class Dom4jTest {

           

              public static void main(String[] args) {

                 String strXml = "<學生信息><學生><編號>001</編號><姓名>張三</姓名>"

                        + "<年齡>23</年齡></學生></學生信息>";

           

                 try {

                     ReadAndWriteXml(strXml);

                 } catch (Exception e) {

                     e.printStackTrace();

                 }

              }

           

              /**

               * Description:讀取并修改xml,寫入文件

               * @param strXml xml String

               * @throws DocumentException

               */

              public static void ReadAndWriteXml(String strXml) throws Exception {

                 Document doc = null;

                 Element rootElement = null;

           

                 doc = DocumentHelper.parseText(strXml);// 創建 document.

                 rootElement = doc.getRootElement();

                 Element newStudent = DocumentHelper.createElement("學生");

                 newStudent.add(DocumentHelper.createElement("編號").addText("002"));

                 newStudent.add(DocumentHelper.createElement("姓名").addText("李四"));

                 newStudent.add(DocumentHelper.createElement("年齡").addText("24"));

                 rootElement.add(newStudent);

                 System.out.println(doc.asXML());

           

                 // 寫文件

                 OutputFormat format = OutputFormat.createPrettyPrint();// 創建美化格式

                 format.setEncoding("utf-8");

                 XMLWriter studentwriter = null;

                 studentwriter = new XMLWriter(

                        new FileOutputStream(new File("c:/student.xml")), format);// "c:\"下寫入student.xml文件

                 studentwriter.write(doc);// XML文檔

                 studentwriter.close();

           

              }

          }

           



          做人簡單一點好


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


          網站導航:
           
          主站蜘蛛池模板: 彩票| 岑溪市| 安国市| 阿克苏市| 砀山县| 都江堰市| 岐山县| 东莞市| 茶陵县| 贵州省| 应城市| 突泉县| 丰台区| 富民县| 谷城县| 阿城市| 永川市| 盐城市| 安康市| 夹江县| 乌拉特后旗| 新津县| 阳城县| 京山县| 昭通市| 洪洞县| 铁岭市| 仙桃市| 泸定县| 凤山市| 印江| 泽普县| 唐海县| 察哈| 屏东市| 西藏| 江北区| 井研县| 县级市| 韶关市| 鄂伦春自治旗|