2017-04-30 每日一记 解析XML文件:Content is not allowed in prolog.

1 篇文章 0 订阅

报错内容为:
    Content is not allowed in prolog. Nested exception: Content is not allowed in prolog.
解释:
    网上所述总结来说就是 解析内容内包含BOM 。这个标记是看不到的,流里面有这个标记而已。
    BOM:Byte Order Mark,中文名字节顺序标记。UCS规范建议在传输字节流前,先传输BOM来判断字
节顺序。其实UTF-8是不需要用BOM来表明字节顺序的,但是可以用BOM来表明编码方式。BOM的UTF-8编码
是 EF BB BF,所以呢,如果接受者收到EF BB BF开头的字节流,就说明它是UTF-8编码了。
解决办法:
    1)、如果解析的是文件,可以用UltraEdit或者EmEditor打开XML,然后另存为,保存的时候有选项是以
无BOM的UTF-8保存还是以有BOM的UTF-8保存。
    2)、如果是从远程请求回来的内容,那么你把返回的流New为字符串,是看不到BOM的,但是你必须截取
你需要的内容:

if(null != result && !"".equals(result)){  if(result.indexOf("<") != -1 && result.lastIndexOf(">") != -1 && result.lastIndexOf(">") > result.indexOf("<"))   result = result.substring(result.indexOf("<"), result.lastIndexOf(">") + 1); } 

    也有说是DOM4J版本较低引起的,但是我看了一下我是用的版本是1.6.1,所以排除此类可能,但是在实
际中我还是建议使用最新稳定版本来进行开发。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值