2009-10-02 19 views
14

FOPとJavaを使用してPDF文書を生成しようとしています。文字列をJavaの入力ストリームに変換します

XMLをファイルとしてではなく文字列として受け取ります。

このXML文字列をXML入力ストリームに変換して、xslfoTransformer.transform(source、res)を呼び出す方法を教えてください。 sourceは入力ストリームとしてのXML文字列です。

ご意見をお寄せください。

答えて

17

あなたはおそらくReader、ないInputStreamに変換します。これを行うにはStringReaderを使用してください。 StreamSourceには、Readerを受け取るコンストラクタがあり、StreamSourceをTransformer.transform()に渡すことができます。 Readerは、文字のストリームである一方で、私は文字列は文字ではなく、バイトを保持し、InputStreamので、あなたはおそらくReaderではなくInputStreamをしたいと言う

はバイトストリームです。

+0

このメソッドを試しましたが、例外が発生しています。 org.apache.fop.fo.FOTreeBuilder.endDocumentでorg.apache.fop.area.AreaTreeHandler.endDocumentでjava.lang.NullPointerExceptionが \t(AreaTreeHandler.java:264) \t(FOTreeBuilder.java:171) \t net.sf.saxon.event.ContentHandlerProxy.close(ContentHandlerProxy.java:255) \t net.sf.saxon.event.ImplicitResultChecker.close(ImplicitResultChecker.java:69) \t at net.sf.saxon.event .ProxyReceiver.close(ProxyReceiver.java:87) でnet.sf.saxon.event.ComplexContentOutputter.closeで\t(ComplexContentOutputter.java:468) 手がかりはありますか? – jobinbasani

+0

Ok ..私はそれを理解しました... xmlのルート要素の名前を「root」に変更すると機能しました。 助けてくれてありがとう! – jobinbasani

1

使用ByteArrayInputStream

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

XMLのエンコーディングを知っていることを暗示します。これは通常は真実ではない。 –

29
new StreamSource(new StringReader(str)) 
関連する問題