aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/Marshaller.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/Marshaller.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/Marshaller.java33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/Marshaller.java b/src/main/java/at/gv/egiz/moazs/Marshaller.java
new file mode 100644
index 0000000..c126f03
--- /dev/null
+++ b/src/main/java/at/gv/egiz/moazs/Marshaller.java
@@ -0,0 +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.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 Marshaller {
+
+ @Autowired
+ private Jaxb2Marshaller 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));
+ }
+}