java - JDOMParseException : Error on line -1: Premature end of file

标签 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 文件末尾有一个新行。

最佳答案

当您执行 IOUtils.copy(bais, new FileOutputStream(myFile)); 时,您已经“耗尽”了 bais。您已将 bais 的内容复制到文件中,现在 bais 为“空”。您将需要:

  1. 在将 bais 写入磁盘之前以某种方式复制它
  2. 直接用JDOM解析并使用JDOM将XML写入磁盘(XMLOutputter)
  3. 让 JDOM 解析文件(不是 bais)。

关于java - JDOMParseException : Error on line -1: Premature end of file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22909734/

相关文章:

java - 多语言调试器

json - 将 xml 文本从网页转换为 json

python - XPath 语法错误 : invalid predicate

java - 在java中读取xml时junit nullpointerException

java - ScheduledThreadPoolExecutor 可以同时执行多个任务吗?

Java getMethod() 导致 NoSuchMethodException 错误

android - styles.xml 中未解析的几个 android 属性

java - 使用 XPath 的 JDom

java - 从 jdom 中的文档读取文本时出错?

java - 如何从 Angular 获取HTTP id并将其发送到java?