将字符串转换为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
是字符流。
答
String S = ...;
InputStream source = new ByteArrayInputStream(S.getBytes(encoding))
+1
暗示你知道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