diff options
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/MyMarshaller.java')
-rw-r--r-- | src/main/java/at/gv/egiz/moazs/MyMarshaller.java | 54 |
1 files changed, 18 insertions, 36 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/MyMarshaller.java b/src/main/java/at/gv/egiz/moazs/MyMarshaller.java index 609a3c8..ea14a0f 100644 --- a/src/main/java/at/gv/egiz/moazs/MyMarshaller.java +++ b/src/main/java/at/gv/egiz/moazs/MyMarshaller.java @@ -1,51 +1,33 @@ package at.gv.egiz.moazs; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.oxm.jaxb.Jaxb2Marshaller; import org.springframework.stereotype.Component; -import javax.xml.bind.*; -import java.io.ByteArrayInputStream; +import javax.xml.transform.Result; +import javax.xml.transform.stream.StreamResult; +import javax.xml.transform.stream.StreamSource; +import java.io.InputStream; import java.io.StringWriter; +/** + * @author xerx593 + * Source: https://stackoverflow.com/questions/44676532/how-to-use-spring-to-marshal-and-unmarshal-xml + */ @Component public class MyMarshaller { -// @Value("classpath:mzs/app2mzs.xsd") -// private Resource mzsSchema; -// -// @Value("classpath:mzs/mzs_mypersondata_en.xsd") -// private Resource mzsPersonSchema; -// -// @Value("classpath:zusemsg/zuse_p2.xsd") -// private Resource msgSchema; -// -// @Value("classpath:zusemsg/zuse_mypersondata_en_p2.xsd") -// private Resource msgPersonSchema; - - @Autowired - private JAXBContext context; - - public byte[] toBytes(JAXBElement element) { - try { - Marshaller marshaller = context.createMarshaller(); - StringWriter sw = new StringWriter(); - marshaller.marshal(element, sw); - return sw.toString().getBytes(); - } catch (JAXBException e) { - throw new RuntimeException(e); - } - } - - public JAXBElement toJAXBElement(byte[] bytes) { - try { - Unmarshaller unmarshaller = context.createUnmarshaller(); + private Jaxb2Marshaller marshaller; - var stream = new ByteArrayInputStream(bytes); - return (JAXBElement) unmarshaller.unmarshal(stream); + public <T> String marshallXml(final T obj) { + StringWriter sw = new StringWriter(); + Result result = new StreamResult(sw); + marshaller.marshal(obj, result); + return sw.toString(); + } - } catch (JAXBException e) { - throw new RuntimeException(e); - } + public <T> T unmarshallXml(final InputStream xml) { + return (T) marshaller.unmarshal(new StreamSource(xml)); } } |