Sì, sì, lo so che sono state fatte molte domande su questo argomento. Ma ancora non riesco a trovare la soluzione al mio problema. Ho un oggetto Java con annotazioni di proprietà. Ad esempio Cliente, come in questo esempio . E ne voglio una rappresentazione in stringa. Google consiglia di utilizzare JAXB per tali scopi. Ma in tutti gli esempi il file XML creato viene stampato su file o console, in questo modo:
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);
Ma devo usare questo oggetto e inviare in rete in formato XML. Quindi voglio ottenere una stringa che rappresenta XML.
String xmlString = ...
sendOverNetwork(xmlString);
Come posso fare questo?
StringWriter
è molto vecchio. Sotto le coperte utilizzaStringBuffer
dove sarebbe stato un approccio molto più veloceStringBuilder
ma che non esisteva quando StringWriter è stato creato per la prima volta. Per questo motivo ogni chiamata asw.toString()
implica la sincronizzazione. Male se stai cercando prestazioni.