解析XML报错:Content is not allowed in prolog

参考这里:http://www.cnblogs.com/kaixin110/archive/2007/12/25/1013722.html

 

kaixin110 写道
对于UTF-8编码的文件来说, BOM头是可有可无的. 如果用dom4J加载含有BOM
头的UTF-8格式的xml文件, 却会抛出"Content is not allowed in prolog"异常.

原来无BOM头的UTF-8文件在经过UltraEdit编辑后, UltraEdit会擅自作主添加一个
BOM头(EditPlus无此问题, 记事本似乎有此问题), 即使去掉UltraEdit中与BOM相
关的所有设置选项也无济于事. 后来在UltraEdit论坛搜索答案, 有人提到11版以后
(含)的UltraEdit"另存为"对话框提供了另存为"UTF-8 - NO BOM"的一个选项.对理
想主义者来说, 这不能算是一个很完美的解决方法:(

进一步研究可以发现, IE/Windows记事本/XmlBuddy等等可正常显示含BOM头的
UTF-8格式文件.那么完美方案应该是让dom4j能正确读入含BOM头的UTF-8文件.
在dom4j的sourceforge论坛上已经有人就此提问, 但是答案中的链接已经失效. 再
次google, 在这里找到了一段代码.

/

在 windows 上,檔案如果是存檔成 unicdoe 或是 utf-8 的時候,如果用 ultraedit 或是其他可以用二進元觀看檔案的軟體打開檔案,會看到檔案的開頭多了 FE FF 這 2 個位元組的東西,去年自己在玩 hibernate 時候,使用 xml 檔案做為 hibernate 初始化的設定檔,那時候曾出現一個怪問題,就是在讀取 xml 檔案的時候,xml parser 一直回報 Content is not allowed in prolog 的錯誤訊息,上網查了查資料後,才發現原來是因為檔案的前面有unicdoe 的 BOM 識別字元。
 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值