Premature end of file 错误解决

http://blog.sina.com.cn/s/blog_409994cb0100oj2t.html

 

 最近在做一个打印的工作,需要对输入流的xml信息进行解析。为了能够满足多元化的需求,这个输入流需要解析多次,使用同一个方法进行解析,在第二次的时候就会抛出一个异常,解析后的document对象也为null。

  [Fatal Error] :-1:-1: Premature end of file.
  org.xml.sax.SAXParseException: Premature end of file.

  百思不得其解,昨日想了一个应对方法,将输入流先读取到一个byte[]对象中,在第二次解析的时候,使用这个byte[]来解决。结果问题更加郁闷,在第一次调用解析的时候,就报错了。欲哭无泪啊……

  任务就是任务,不管你有多少困难都要迎头赶上,继续埋头苦思问题的所在。还好如今互联网发达了,可以让我找到问题的源头。参考文献如下:

 

  使用dom4j解析来自InputStream中的XML内容,发生异常:Premature end of file。是因为这个InputStream已经读过了,在读入dom4j时,不是从开头读的,因此报错。

  详细解释如下:来自http://forums.sun.com/thread.jspa?threadID=641465非常遗憾,sun被oracle收购了,所以这个地址不存在了……

  Problem: Input stream is opened and read bytes from it, passed the same to document builder to parse method. so it caused the exception saying premature end of file.

  Solution: Pass fresh input stream which is opened and not read anything (bytes) before passing to parse method of DocumentBuilder object.

 

  还别说,我之前想到的那个先读入byte[]的想法还是比较好的,只要后续的操作使用new ByteArrayInputStream(tbyte),就没有再出现解析的问题。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值