2009-10-02 12 views
14

Sto provando a generare un documento PDF utilizzando FOP e Java.Convertire una stringa in un flusso di input XML in java

Ricevo l'XML come stringa e non come file.

Come posso convertire questa stringa XML in un flusso di input XML in modo che possa chiamare xslfoTransformer.transform (source, res); dove source è la mia stringa XML come stream di input.

Si prega di fornire i vostri suggerimenti.

risposta

17

probabilmente avrete bisogno di convertirlo in un Reader, non un InputStream. Utilizzare StringReader per farlo. StreamSource ha un costruttore che accetta un Reader e tu puoi passare quello StreamSource a Transformer.transform().

dico che probabilmente desidera un Reader piuttosto che un InputStream perché una stringa contiene caratteri, non byte e un InputStream è un flusso di byte, mentre un Reader è un flusso di caratteri.

+0

Ho provato questo metodo ma sto ottenendo un'eccezione. java.lang.NullPointerException \t a org.apache.fop.area.AreaTreeHandler.endDocument (AreaTreeHandler.java:264) \t a org.apache.fop.fo.FOTreeBuilder.endDocument (FOTreeBuilder.java:171) \t a net.sf.saxon.event.ContentHandlerProxy.close (ContentHandlerProxy.java:255) \t a net.sf.saxon.event.ImplicitResultChecker.close (ImplicitResultChecker.java:69) \t a net.sf.saxon.event .ProxyReceiver.close (ProxyReceiver.java:87) \t a net.sf.saxon.event.ComplexContentOutputter.close (ComplexContentOutputter.java:468) \t a Eventuali indizi? – jobinbasani

+0

Ok .. l'ho capito ... Ha funzionato quando ho rinominato l'elemento radice di xml in 'root'. Grazie per l'aiuto !!!! – jobinbasani

1

Uso ByteArrayInputStream:

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

Implica la codifica dell'XML. Che normalmente non è vero. –

29
new StreamSource(new StringReader(str)) 
Problemi correlati