Solución:
Puede utilizar el método de Marshaler para calcular las referencias que toma un Writer como parámetro:
mariscal (Objeto, Escritor)
y pasarle una implementación que puede construir un objeto String
Subclases conocidas directas:
BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter
Llame a su método toString para obtener el valor de cadena real.
Así que haciendo:
StringWriter sw = new StringWriter();
jaxbMarshaller.marshal(customer, sw);
String xmlString = sw.toString();
Una opción conveniente es usar javax.xml.bind.JAXB:
StringWriter sw = new StringWriter();
JAXB.marshal(customer, sw);
String xmlString = sw.toString();
los [reverse] proceso (unmarshal) sería:
Customer customer = JAXB.unmarshal(new StringReader(xmlString), Customer.class);
No es necesario lidiar con las excepciones marcadas en este enfoque.
Como menciona A4L, puede usar StringWriter. Proporcionando aquí código de ejemplo:
private static String jaxbObjectToXML(Customer customer) {
String xmlString = "";
try {
JAXBContext context = JAXBContext.newInstance(Customer.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // To format XML
StringWriter sw = new StringWriter();
m.marshal(customer, sw);
xmlString = sw.toString();
} catch (JAXBException e) {
e.printStackTrace();
}
return xmlString;
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)