dom4j学习时遇到的问题

   因为要xml格式存取数据,所以学习一下dom4j。
   学习的例子来自IBM中国研发中心的一篇文章(http://www-128.ibm.com/developerworks/cn/xml/x-dom4j.html)。在其中遇到几个问题,解决过程走了很多弯路,记录如下:

1,把第二个java类运行后遇到如下错误: 

                c Nested exception: c

   后来在javaeye找到了答案(原文忘了,不做链接了)解决方法如下:
   把catalog.xml中的那句文档类型声明(
                       <!DOCTYPE catalog SYSTEM "file://c:/Dtds/catalog.dtd">
)删除。
   注意不要多删了回车符,我刚开始的时候也尝试删除文档类型声明,但是因为多删了回车,然后出现另外一种异常(再一次陷入困境),走了不少弯路。 

 2,问题1解决后又出现另外一种异常

         Exception in thread "main" java.lang.NoClassDefFoundError: org/jaxen/JaxenException

   解决方法很简单,下载dom4j-1.6.1.zip,里面有一个jaxen-1.1-beta-6.jar导入到项目即可(将jaxen-1.1-beta-6.jar加入到classpath里面去)

3,在向xml文件中写入中文字符时遇到如下异常
   Invalid byte 1 of 1-byte UTF-8 sequence. Nested exception: Invalid byte 1 of 1-byte UTF-8 sequence.

   上网搜索得到解决办法(代码说明):
//原始代码
//      XMLWriter output = new XMLWriter(
//              new FileWriter( new File(fileName )));
//          output.write( document );
//          output.close();

//正常工作的代码,替换上面的代码即可
       java.io.Writer wr=new java.io.OutputStreamWriter(new java.io.FileOutputStream(fileName),"UTF-8");  
       document.write(wr);  
       wr.close();

   原因分析:
   由于FileWriter默认的输出编码是ANSI编码,而Dom4j中的wirte方法提供的内容实际是以UTF-8保存的,因此造成了包括中文字符的XML文件无法正常阅读。
 
解决方法:
   不能使用简单的FileWriter,而应该是使用一个能指定具体输出编码的Writer,在JDK的io包中, OutputStreamWriter可以指定输出编码。
   (本问题参考:http://www.javaresearch.org/article/55185.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值