JDOMParseException:第-1行的错误:文件过早结束

时间:2014-04-07 10:26:30

标签: java xml jdom

使用JDOM的SAXBuilder build方法读取InputStream时出现异常:

InputStream bais = p_sendXML.getXml().getInputStream();
File myFile = new File(System.getProperty("java.io.tmpdir"), PREFIX+p_sendXML.getSessionId()+".xml");
IOUtils.copy(bais, new FileOutputStream(myFile));
LOGGER.debug("File save in: "+myFile.getAbsolutePath());
SAXBuilder builder = new SAXBuilder();
Document xmlDoc = builder.build(bais);

文件已正确创建且XML内部有效,因此我不应该得到此异常。如果您想知道,XML文件末尾有一个新行。

1 个答案:

答案 0 :(得分:4)

你已经筋疲力尽'你做bais时的IOUtils.copy(bais, new FileOutputStream(myFile));。您已将bais的内容复制到该文件中,现在bais已空了'。您需要:

  1. 在将其写入磁盘之前以某种方式获取bais的副本
  2. 通过JDOM直接解析它并使用JDOM将XML写入磁盘(XMLOutputter
  3. 让JDOM解析文件(而不是bais)。