我試圖使用FOP和Java生成PDF文檔。將字符串轉換爲java中的XML輸入流
我收到XML作爲字符串而不是文件。
如何將此XML字符串轉換爲XML輸入流,以便我可以調用xslfoTransformer.transform(source,res);其中source是我的XML字符串作爲Input流。
請提供您的建議。
我試圖使用FOP和Java生成PDF文檔。將字符串轉換爲java中的XML輸入流
我收到XML作爲字符串而不是文件。
如何將此XML字符串轉換爲XML輸入流,以便我可以調用xslfoTransformer.transform(source,res);其中source是我的XML字符串作爲Input流。
請提供您的建議。
你可能想將其轉換爲Reader
,而不是InputStream
。使用StringReader來做到這一點。 StreamSource有一個構造函數,它需要一個Reader,並且你可以將這個StreamSource
傳遞給Transformer.transform()。
我說你可能要一個Reader
而非InputStream
,因爲一個String持有的字符,而不是字節,並且InputStream
是字節流而Reader
是字符流。
String S = ...;
InputStream source = new ByteArrayInputStream(S.getBytes(encoding))
暗示你知道XML的編碼。這通常是不正確的。 – 2009-10-02 17:01:35
new StreamSource(new StringReader(str))
我試過這種方法,但我得到一個異常。 顯示java.lang.NullPointerException \t在org.apache.fop.area.AreaTreeHandler.endDocument(AreaTreeHandler.java:264) \t在org.apache.fop.fo.FOTreeBuilder.endDocument(FOTreeBuilder.java:171) \t at net.sf.saxon.event.ContentHandlerProxy.close(ContentHandlerProxy.java:255) \t at net.sf.saxon.event.ImplicitResultChecker.close(ImplicitResultChecker.java:69) \t at net.sf.saxon.event .ProxyReceiver.close(ProxyReceiver.java:87) \t在net.sf.saxon.event.ComplexContentOutputter.close(ComplexContentOutputter.java:468) \t在 任何線索? – jobinbasani 2009-10-02 19:26:43
好吧,我想通了...... 它工作時,我將xml的根元素重命名爲'根'。 感謝您的幫助! – jobinbasani 2009-10-02 19:44:29