Tak, tak, wiem, że zadawano wiele pytań na ten temat. Ale nadal nie mogę znaleźć rozwiązania mojego problemu. Mam obiekt Java z adnotacjami. Na przykład Klient, jak w tym przykładzie . Chcę, żeby to było w postaci String. Google zaleca używanie JAXB do takich celów. Ale we wszystkich przykładach utworzony plik XML jest drukowany do pliku lub konsoli, na przykład:
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);
Ale muszę użyć tego obiektu i wysłać przez sieć w formacie XML. Więc chcę uzyskać String, który reprezentuje XML.
String xmlString = ...
sendOverNetwork(xmlString);
Jak mogę to zrobić?
StringWriter
jest bardzo stary. Pod okładkami używaStringBuffer
tam, gdzie byłoby znacznie szybsze podejście,StringBuilder
ale nie istniało, gdy po raz pierwszy powstał StringWriter. Z tego powodu każde wywołaniesw.toString()
oznacza synchronizację. Źle, jeśli szukasz wydajności.