private static String objectToXML(Object object, Class clazz) throws JAXBException, PropertyException { JAXBContext jc = JAXBContext.newInstance(clazz); Marshaller marshaller = jc.createMarshaller(); marshaller.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE ); ByteArrayOutputStream baos = new ByteArrayOutputStream(); marshaller.marshal(object, baos); return new String(baos.toByteArray()); }
This is another working example (courtesy of Adam Bien):
import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class Duke { private String language; private int age; @Override public String toString() { return "Duke [language=" + language + ", age=" + age + "]"; } public Duke(String language, int age) { super(); this.language = language; this.age = age; } public Duke() { } } import java.io.File; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import org.junit.jupiter.api.Test; public class DukeTest { @Test public void testSerialization() throws JAXBException { JAXBContext context = JAXBContext.newInstance(Duke.class); Marshaller marshaller = context.createMarshaller(); marshaller.marshal(new Duke("Java", 2), new File("duke.xml")); Unmarshaller unmarshaller = context.createUnmarshaller(); Object unmarshalled = unmarshaller.unmarshal(new File("duke.xml")); System.out.println(unmarshalled); } }
No comments:
Post a Comment