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