2014-04-07 35 views
3

我得到讀書的InputStream用JDOM的SAXBuilder的的build方法時異常的過早結束:JDOMParseException:行-1錯誤:文件

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

+0

在哪行代碼? – bsiamionau

+0

'建造'一個。我編輯了我的帖子。 –

回答

4

當您完成IOUtils.copy(bais, new FileOutputStream(myFile));時,您已經「耗盡」bais。您已將bais的內容複製到文件中,現在bais是「空的」。你將需要:

  1. 採取bais的副本不知它寫入磁盤之前
  2. 由JDOM直接解析,並使用JDOM的XML到磁盤寫(XMLOutputter
  3. GET JDOM到解析文件(不是bais)。
+0

非常感謝!我應該自己找到這個... –

+0

@pHCito不要爲這個問題而自責。這些事情發生了,這就是爲什麼第二組眼睛有幫助。 SO的原因(正確的原因)。 (你能告訴我在......之前被這樣的事情困住了嗎?) – rolfl

相關問題