Так, так, я знаю, що на цю тему було задано багато питань. Але я все ще не можу знайти рішення своєї проблеми. У мене є властивість, анотована об'єктом 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()
увазі синхронізацію. Погано, якщо ти шукаєш продуктивності.