Да, да, я знаю, что по этой теме было задано много вопросов. Но я все еще не могу найти решение своей проблемы. У меня есть аннотированный объект Java. Например Клиент, как в этом примере . И мне нужно его строковое представление. Google рекомендует использовать JAXB для таких целей. Но во всех примерах созданный XML-файл печатается в файл или консоль, например:
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);
Но я должен использовать этот объект и отправить по сети в формате XML. Итак, я хочу получить строку, представляющую XML.
String xmlString = ...
sendOverNetwork(xmlString);
Как я могу это сделать?
StringWriter
очень старый. Под покровом он используетStringBuffer
там, где можно было бы использовать гораздо более быстрый подход,StringBuilder
но этого не было, когда впервые был создан StringWriter. Из-за этого каждый вызовsw.toString()
подразумевает синхронизацию. Плохо, если вам нужна производительность.