Sí, sí, sé que se hicieron muchas preguntas sobre este tema. Pero todavía no puedo encontrar la solución a mi problema. Tengo un objeto Java anotado de propiedad. Por ejemplo, Cliente, como en este ejemplo . Y quiero una representación String de eso. Google recomienda utilizar JAXB para tales fines. Pero en todos los ejemplos, el archivo XML creado se imprime en un archivo o consola, así:
File file = new File("C:\\file.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
// output pretty printed
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(customer, file);
jaxbMarshaller.marshal(customer, System.out);
Pero tengo que usar este objeto y enviarlo a través de la red en formato XML. Entonces quiero obtener una cadena que represente XML.
String xmlString = ...
sendOverNetwork(xmlString);
¿Cómo puedo hacer esto?
StringWriter
es muy viejo. Debajo de las cubiertas, se usaStringBuffer
donde se habría utilizado un enfoque mucho más rápido,StringBuilder
pero eso no existía cuando se hizo StringWriter por primera vez. Por eso, cada llamada asw.toString()
implica sincronización. Malo si buscas rendimiento.