2012-02-05 7 views
25
JAXBContext context = JAXBContext 
        .newInstance(CreateExemptionCertificate.class); 
      Marshaller m = context.createMarshaller(); 
      m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); 

      m.marshal(cc, System.out); 

En el código anterior obtengo el resultado para la consola (me refiero a que XML se está imprimiendo en la consola). Quiero obtener este XML en una cadena. No entiendo qué argumento debería pasar al método Marshal para obtener XML String en una variable String en lugar de imprimirlo en la consola. Cualquiera que tenga alguna idea, por favor comparte.Obteniendo el resultado de Marshall en la Cadena

+0

posible duplicado de [Quiero convertir una secuencia de salida en objeto String] (http://stackoverflow.com/questions/2472155/i-want-to-convert-an- output-stream-into-string-object) – nbrooks

Respuesta

5

Pruebe la clasificación a una instancia de ByteArrayOutputStream y luego invocando toByteArray en ella.

+0

¿Qué quieres hacer con él? El enfoque que propuse (llamar 'toByteArray()' en la secuencia) le daría una instancia 'byte []' que contiene los bytes del XML. – laz

+0

Tengo la misma necesidad, en mi caso, estoy tratando de devolverla como resultado de una llamada de servicio. –

11

Usted puede hacerlo de esta manera :

CreateExemptionCertificate cc = ...; 
    JAXBContext context = JAXBContext.newInstance(CreateExemptionCertificate.class); 
    Marshaller m = context.createMarshaller(); 
    m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); 

    StringWriter sw = new StringWriter(); 
    m.marshal(cc, sw); 

    String result = sw.toString(); 
Cuestiones relacionadas