Sim, sim, eu sei que muitas perguntas foram feitas sobre este assunto. Mas ainda não consigo encontrar a solução para o meu problema. Eu tenho um objeto Java anotado de propriedade. Por exemplo, Cliente, como neste exemplo . E eu quero uma representação de String dele. O Google recomenda o uso de JAXB para esses fins. Mas em todos os exemplos o arquivo XML criado é impresso no arquivo ou console, assim:
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);
Mas tenho que usar este objeto e enviar pela rede em formato XML. Portanto, quero obter uma String que representa XML.
String xmlString = ...
sendOverNetwork(xmlString);
Como posso fazer isso?
StringWriter
é bem velho. Nos bastidores, ele usaStringBuffer
onde uma abordagem muito mais rápida teria sido usada,StringBuilder
mas isso não existia quando StringWriter foi feito pela primeira vez. Por causa disso, toda chamada parasw.toString()
implica sincronização. Ruim se você estiver procurando por desempenho.