aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/scheme/Marshaller.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/scheme/Marshaller.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/scheme/Marshaller.java33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/scheme/Marshaller.java b/src/main/java/at/gv/egiz/moazs/scheme/Marshaller.java
new file mode 100644
index 0000000..2dbb6a0
--- /dev/null
+++ b/src/main/java/at/gv/egiz/moazs/scheme/Marshaller.java
@@ -0,0 +1,33 @@
+package at.gv.egiz.moazs.scheme;
+
+import org.springframework.oxm.jaxb.Jaxb2Marshaller;
+
+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
+ */
+public class Marshaller {
+
+ private final Jaxb2Marshaller marshaller;
+
+ public Marshaller(Jaxb2Marshaller marshaller) {
+ this.marshaller = marshaller;
+ }
+
+ public <T> String marshallXml(final T obj) {
+ StringWriter sw = new StringWriter();
+ Result result = new StreamResult(sw);
+ marshaller.marshal(obj, result);
+ return sw.toString();
+ }
+
+ public <T> T unmarshallXml(final InputStream xml) {
+ return (T) marshaller.unmarshal(new StreamSource(xml));
+ }
+}