diff --git a/jackson/pom.xml b/jackson/pom.xml
index f63ec08b48..77e538bf3d 100644
--- a/jackson/pom.xml
+++ b/jackson/pom.xml
@@ -22,6 +22,13 @@
commons-io
2.4
+
+
+ com.fasterxml.jackson.dataformat
+ jackson-dataformat-xml
+ 2.7.4
+
+
org.apache.commons
diff --git a/jackson/src/test/java/com/baeldung/jackson/xml/TestXMLSerializeDeserialize.java b/jackson/src/test/java/com/baeldung/jackson/xml/TestXMLSerializeDeserialize.java
new file mode 100644
index 0000000000..92d0bd13d4
--- /dev/null
+++ b/jackson/src/test/java/com/baeldung/jackson/xml/TestXMLSerializeDeserialize.java
@@ -0,0 +1,86 @@
+package com.baeldung.jackson.xml;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+import org.junit.Test;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.dataformat.xml.XmlMapper;
+
+public class TestXMLSerializeDeserialize {
+
+ @Test
+ public void whenJavaSerializedToXmlStr_thenCorrect() throws JsonProcessingException {
+ XmlMapper xmlMapper = new XmlMapper();
+ String xml = xmlMapper.writeValueAsString(new SimpleBean());
+ assertNotNull(xml);
+ }
+
+ @Test
+ public void whenJavaSerializedToXmlFile_thenCorrect() throws IOException {
+ XmlMapper xmlMapper = new XmlMapper();
+ xmlMapper.writeValue(new File("target/simple_bean.xml"), new SimpleBean());
+ File file = new File("target/simple_bean.xml");
+ assertNotNull(file);
+ }
+
+ @Test
+ public void whenJavaGotFromXmlStr_thenCorrect() throws IOException {
+ XmlMapper xmlMapper = new XmlMapper();
+ SimpleBean value = xmlMapper.readValue(
+ "12", SimpleBean.class);
+ assertTrue(value.getX() == 1 && value.getY() == 2);
+ }
+
+ @Test
+ public void whenJavaGotFromXmlFile_thenCorrect() throws IOException {
+ File file = new File("src/test/resources/simple_bean.xml");
+ XmlMapper xmlMapper = new XmlMapper();
+ String xml = inputStreamToString(new FileInputStream(file));
+ SimpleBean value = xmlMapper.readValue(xml, SimpleBean.class);
+ assertTrue(value.getX() == 1 && value.getY() == 2);
+ }
+
+ private static String inputStreamToString(InputStream is) throws IOException {
+ BufferedReader br;
+ StringBuilder sb = new StringBuilder();
+
+ String line;
+ br = new BufferedReader(new InputStreamReader(is));
+ while ((line = br.readLine()) != null) {
+ sb.append(line);
+ }
+ br.close();
+ return sb.toString();
+ }
+}
+
+class SimpleBean {
+ private int x = 1;
+ private int y = 2;
+
+ public int getX() {
+ return x;
+ }
+
+ public void setX(int x) {
+ this.x = x;
+ }
+
+ public int getY() {
+ return y;
+ }
+
+ public void setY(int y) {
+ this.y = y;
+ }
+
+}
diff --git a/jackson/src/test/resources/simple_bean.xml b/jackson/src/test/resources/simple_bean.xml
new file mode 100644
index 0000000000..7829ea35a4
--- /dev/null
+++ b/jackson/src/test/resources/simple_bean.xml
@@ -0,0 +1,4 @@
+
+ 1
+ 2
+
\ No newline at end of file