将字符串转换为java中的XML输入流

问题描述:

我试图使用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是字符流。

+0

我试过这种方法,但我得到一个异常。 显示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

+0

好吧,我想通了...... 它工作时,我将xml的根元素重命名为'根'。 感谢您的帮助! – jobinbasani 2009-10-02 19:44:29

使用ByteArrayInputStream

String S = ...; 
InputStream source = new ByteArrayInputStream(S.getBytes(encoding)) 
+1

暗示你知道XML的编码。这通常是不正确的。 – 2009-10-02 17:01:35

new StreamSource(new StringReader(str))