我为人人,人人为我

PLM,PDM制造业的制胜法宝
posts - 16, comments - 9, trackbacks - 0, articles - 1
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Dom4j简单学习

Posted on 2007-07-13 21:41 Glen 阅读(1311) 评论(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();

 

    }

}

 



做人简单一点好


只有注册用户登录后才能发表评论。


网站导航: