2013-04-12 92 views
0

我想創建一個XML文件,它將作爲下載鏈接提供給用戶(Wicket和TransformerFactory for XSLT)。 目前,我使用File類。但是,我不想在服務器上創建文件。該文件應該只存在於內存中。有人可以告訴我怎樣才能做到這一點? 謝謝!內存中的XML文件而不是磁盤上的文件

我當前的代碼:

Reader reader = new StringReader("DATA"); 
TransformerFactory tFactory = TransformerFactory.newInstance(); 
Transformer transformer = tFactory.newTransformer(new StreamSource("EXCEL.xsl")); 
transformer.setOutputProperty(OutputKeys.METHOD, "xml"); 
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); 
File file= new File("FILE.xml");     
transformer.transform(new StreamSource(reader), new StreamResult(new FileOutputStream(file))); 

其他類:

File file = new File("file"); 
add(new DownloadLink("download", file, "XML.xml")); 
+0

就我所知,使用File類,您沒有機會完成此操作。 – cgon

回答

1

,你可以用這個啓動(不知道這是完全正確的 - 現在不能檢查)

ByteArrayOutputStream oStream = new ByteArrayOutputStream(); 
transformer.transform(new StreamSource(reader), new StreamResult(oStream)) 
byte[] xmlResult = oStream.toByteArray(); 
+2

你甚至可能想要考慮直接將流式傳輸回客戶端(在Servlet中使用'response.getOutputStream()',不知道如何訪問Wicket中的響應輸出流)。 – mthmulders

+0

如果我們已經談到了一個簡單的servlet,我只是建議 –

+1

不要在ByteArrayOutputStream上調用'toString()'。改爲調用'toByteArray()'。 –

相關問題