2009-10-02 21 views
14

Estoy intentando generar un documento PDF utilizando FOP y Java.Convierta una cadena a flujo de entrada XML en java

Recibo el XML como una cadena y no como un archivo.

¿Cómo puedo convertir esta cadena XML en una secuencia de entrada XML para que pueda llamar a xslfoTransformer.transform (source, res); donde fuente es mi cadena XML como una corriente de entrada.

Por favor, envíe sus sugerencias.

Respuesta

17

es probable que desee para convertirlo en un Reader, no un InputStream. Use StringReader para hacer esto. StreamSource tiene un constructor que toma un Reader, y puede pasar ese StreamSource a Transformer.transform().

digo es probable que desee un Reader en lugar de un InputStream debido a una cadena de caracteres, no tiene bytes, y un InputStream es un flujo de bytes mientras que un Reader es una cadena de caracteres.

+0

Intenté este método, pero recibo una excepción. java.lang.NullPointerException \t en org.apache.fop.area.AreaTreeHandler.endDocument (AreaTreeHandler.java:264) \t en org.apache.fop.fo.FOTreeBuilder.endDocument (FOTreeBuilder.java:171) \t en net.sf.saxon.event.ContentHandlerProxy.close (ContentHandlerProxy.java:255) \t en net.sf.saxon.event.ImplicitResultChecker.close (ImplicitResultChecker.java:69) \t en net.sf.saxon.event .ProxyReceiver.close (ProxyReceiver.java:87) \t en net.sf.saxon.event.ComplexContentOutputter.close (ComplexContentOutputter.java:468) \t en ¿Alguna pista? – jobinbasani

+0

Ok ... Lo descubrí ... Funcionó cuando cambié el nombre del elemento raíz del xml a 'raíz'. Gracias por la ayuda !!!! – jobinbasani

1

Uso ByteArrayInputStream:

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

Indica que conoce la codificación del XML. Lo cual normalmente no es verdad. –

29
new StreamSource(new StringReader(str)) 
Cuestiones relacionadas