Convert Java object to XML string
You can use the Marshaler's method for marshaling which takes a Writer as parameter:
marshal(Object,Writer)
and pass it an Implementation which can build a String object
Direct Known Subclasses: BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter
Call its toString method to get the actual String value.
So doing:
StringWriter sw = new StringWriter();
jaxbMarshaller.marshal(customer, sw);
String xmlString = sw.toString();
A convenient option is to use javax.xml.bind.JAXB:
StringWriter sw = new StringWriter();
JAXB.marshal(customer, sw);
String xmlString = sw.toString();
The [reverse] process (unmarshal) would be:
Customer customer = JAXB.unmarshal(new StringReader(xmlString), Customer.class);
No need to deal with checked exceptions in this approach.
As A4L mentioning, you can use StringWriter. Providing here example code:
private static String jaxbObjectToXML(Customer customer) {
String xmlString = "";
try {
JAXBContext context = JAXBContext.newInstance(Customer.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // To format XML
StringWriter sw = new StringWriter();
m.marshal(customer, sw);
xmlString = sw.toString();
} catch (JAXBException e) {
e.printStackTrace();
}
return xmlString;
}
You can marshal it to a StringWriter
and grab its string. from toString()
.