Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1449898
  • 博文数量: 254
  • 博客积分: 8696
  • 博客等级: 中将
  • 技术积分: 2961
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-03 16:46
文章分类

全部博文(254)

文章存档

2015年(4)

2014年(18)

2013年(16)

2012年(8)

2011年(25)

2010年(2)

2009年(74)

2008年(107)

分类: Java

2009-05-15 13:55:31

现象:
SAXBuilder builder = new SAXBuilder();
Document doc = null;
Reader  in = new StringReader(xmlPath);
在 doc = builder.build(in);时,抛出错误:
Caused by: org.xml.sax.SAXParseException: Content is not allowed in prolog.

原因:
XML文件使用utf-8编码,在文件开始处含有不可解释的字符,该字符串称为BOM。使用软件UltraEdit打开xml文件,转到十六进制编辑,可以发现开始处为FFEF,就是这个字符引起了异常。

解决方法:

可以使用UltraEdit把utf-8转为ascii(在写xml文件时,使用UltraEdit软件编辑,记事本或其他xml软件默认是使用utf-8保存,在UltraEdit软件配置中可以设置默认保存为ascii)。
以上是网上普遍解决方法,然而我尝试后依然没法解决,最后使用FileInputStream in = new FileInputStream(xmlPath);代替Reader类,程序正常运行。

可以参考:
http://happyhou.blog.sohu.com/84258111.html

阅读(31259) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-08-06 02:27:01

呃,被这个问题困扰很久,我使用 FileInputStream 代替原本的 InputStreamReader 后果然不再报错。虽然还是不明白这是为什么,但无论如何,谢谢博主~