diff --git a/jaxb/src/main/resources/global.xjb b/jaxb/src/main/resources/global.xjb
deleted file mode 100644
index 3cda00b31a01..000000000000
--- a/jaxb/src/main/resources/global.xjb
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index b3892e010c9b..7ee8be230fb0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -673,7 +673,6 @@
javax-sound
javaxval
javaxval-2
- jaxb
jetbrains
jgit
jmh
@@ -762,7 +761,7 @@
spring-actuator
spring-ai
spring-ai-2
- spring-ai-3
+ spring-ai-3
spring-aop
spring-aop-2
spring-batch
@@ -826,10 +825,7 @@
vertx-modules
web-modules
webrtc
- xml
- xml-2
- xml-3
- xstream
+ xml-modules
@@ -1104,7 +1100,6 @@
javax-sound
javaxval
javaxval-2
- jaxb
jetbrains
jgit
jmh
@@ -1193,7 +1188,7 @@
spring-actuator
spring-ai
spring-ai-2
- spring-ai-3
+ spring-ai-3
spring-aop
spring-aop-2
spring-batch
@@ -1257,10 +1252,7 @@
vertx-modules
web-modules
webrtc
- xml
- xml-2
- xml-3
- xstream
+ xml-modules
diff --git a/jaxb/pom.xml b/xml-modules/jaxb/pom.xml
similarity index 95%
rename from jaxb/pom.xml
rename to xml-modules/jaxb/pom.xml
index 9e7afc46e21b..08a66ea8fe98 100644
--- a/jaxb/pom.xml
+++ b/xml-modules/jaxb/pom.xml
@@ -1,14 +1,14 @@
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
jaxb
jaxb
com.baeldung
- parent-modules
+ xml-modules
1.0.0-SNAPSHOT
diff --git a/jaxb/src/main/java/com/baeldung/jaxb/Book.java b/xml-modules/jaxb/src/main/java/com/baeldung/jaxb/Book.java
similarity index 100%
rename from jaxb/src/main/java/com/baeldung/jaxb/Book.java
rename to xml-modules/jaxb/src/main/java/com/baeldung/jaxb/Book.java
diff --git a/jaxb/src/main/java/com/baeldung/jaxb/DateAdapter.java b/xml-modules/jaxb/src/main/java/com/baeldung/jaxb/DateAdapter.java
similarity index 100%
rename from jaxb/src/main/java/com/baeldung/jaxb/DateAdapter.java
rename to xml-modules/jaxb/src/main/java/com/baeldung/jaxb/DateAdapter.java
diff --git a/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/Book.java b/xml-modules/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/Book.java
similarity index 100%
rename from jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/Book.java
rename to xml-modules/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/Book.java
diff --git a/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/BookDateAdapter.java b/xml-modules/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/BookDateAdapter.java
similarity index 100%
rename from jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/BookDateAdapter.java
rename to xml-modules/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/BookDateAdapter.java
diff --git a/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/BookLocalDateTimeAdapter.java b/xml-modules/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/BookLocalDateTimeAdapter.java
similarity index 100%
rename from jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/BookLocalDateTimeAdapter.java
rename to xml-modules/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/BookLocalDateTimeAdapter.java
diff --git a/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/DateAdapter.java b/xml-modules/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/DateAdapter.java
similarity index 100%
rename from jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/DateAdapter.java
rename to xml-modules/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/DateAdapter.java
diff --git a/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/JaxbDateUnmarshalling.java b/xml-modules/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/JaxbDateUnmarshalling.java
similarity index 100%
rename from jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/JaxbDateUnmarshalling.java
rename to xml-modules/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/JaxbDateUnmarshalling.java
diff --git a/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/LocalDateTimeAdapter.java b/xml-modules/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/LocalDateTimeAdapter.java
similarity index 100%
rename from jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/LocalDateTimeAdapter.java
rename to xml-modules/jaxb/src/main/java/com/baeldung/jaxb/dateunmarshalling/LocalDateTimeAdapter.java
diff --git a/jaxb/src/main/java/com/baeldung/jaxb/gen/ObjectFactory.java b/xml-modules/jaxb/src/main/java/com/baeldung/jaxb/gen/ObjectFactory.java
similarity index 100%
rename from jaxb/src/main/java/com/baeldung/jaxb/gen/ObjectFactory.java
rename to xml-modules/jaxb/src/main/java/com/baeldung/jaxb/gen/ObjectFactory.java
diff --git a/jaxb/src/main/java/com/baeldung/jaxb/gen/UserRequest.java b/xml-modules/jaxb/src/main/java/com/baeldung/jaxb/gen/UserRequest.java
similarity index 100%
rename from jaxb/src/main/java/com/baeldung/jaxb/gen/UserRequest.java
rename to xml-modules/jaxb/src/main/java/com/baeldung/jaxb/gen/UserRequest.java
diff --git a/jaxb/src/main/java/com/baeldung/jaxb/gen/UserResponse.java b/xml-modules/jaxb/src/main/java/com/baeldung/jaxb/gen/UserResponse.java
similarity index 100%
rename from jaxb/src/main/java/com/baeldung/jaxb/gen/UserResponse.java
rename to xml-modules/jaxb/src/main/java/com/baeldung/jaxb/gen/UserResponse.java
diff --git a/jaxb/src/main/java/com/baeldung/jaxb/gen/package-info.java b/xml-modules/jaxb/src/main/java/com/baeldung/jaxb/gen/package-info.java
similarity index 100%
rename from jaxb/src/main/java/com/baeldung/jaxb/gen/package-info.java
rename to xml-modules/jaxb/src/main/java/com/baeldung/jaxb/gen/package-info.java
diff --git a/jaxb/src/main/java/com/baeldung/jaxb/jaxpvsjaxb/jaxb/Department.java b/xml-modules/jaxb/src/main/java/com/baeldung/jaxb/jaxpvsjaxb/jaxb/Department.java
similarity index 100%
rename from jaxb/src/main/java/com/baeldung/jaxb/jaxpvsjaxb/jaxb/Department.java
rename to xml-modules/jaxb/src/main/java/com/baeldung/jaxb/jaxpvsjaxb/jaxb/Department.java
diff --git a/jaxb/src/main/java/com/baeldung/jaxb/jaxpvsjaxb/jaxb/Employee.java b/xml-modules/jaxb/src/main/java/com/baeldung/jaxb/jaxpvsjaxb/jaxb/Employee.java
similarity index 100%
rename from jaxb/src/main/java/com/baeldung/jaxb/jaxpvsjaxb/jaxb/Employee.java
rename to xml-modules/jaxb/src/main/java/com/baeldung/jaxb/jaxpvsjaxb/jaxb/Employee.java
diff --git a/jaxb/src/main/java/com/baeldung/jaxb/jaxpvsjaxb/jaxp/JaxpExample.java b/xml-modules/jaxb/src/main/java/com/baeldung/jaxb/jaxpvsjaxb/jaxp/JaxpExample.java
similarity index 100%
rename from jaxb/src/main/java/com/baeldung/jaxb/jaxpvsjaxb/jaxp/JaxpExample.java
rename to xml-modules/jaxb/src/main/java/com/baeldung/jaxb/jaxpvsjaxb/jaxp/JaxpExample.java
diff --git a/jaxb/src/main/java/org/w3/_2001/xmlschema/Adapter1.java b/xml-modules/jaxb/src/main/java/org/w3/_2001/xmlschema/Adapter1.java
similarity index 100%
rename from jaxb/src/main/java/org/w3/_2001/xmlschema/Adapter1.java
rename to xml-modules/jaxb/src/main/java/org/w3/_2001/xmlschema/Adapter1.java
diff --git a/jaxb/src/main/resources/custom-date-unmarshalling.xml b/xml-modules/jaxb/src/main/resources/custom-date-unmarshalling.xml
similarity index 100%
rename from jaxb/src/main/resources/custom-date-unmarshalling.xml
rename to xml-modules/jaxb/src/main/resources/custom-date-unmarshalling.xml
diff --git a/jaxb/src/main/resources/default-date-unmarshalling.xml b/xml-modules/jaxb/src/main/resources/default-date-unmarshalling.xml
similarity index 100%
rename from jaxb/src/main/resources/default-date-unmarshalling.xml
rename to xml-modules/jaxb/src/main/resources/default-date-unmarshalling.xml
diff --git a/jaxb/src/main/resources/log4jstructuraldp.properties b/xml-modules/jaxb/src/main/resources/log4jstructuraldp.properties
similarity index 100%
rename from jaxb/src/main/resources/log4jstructuraldp.properties
rename to xml-modules/jaxb/src/main/resources/log4jstructuraldp.properties
diff --git a/jaxb/src/main/resources/logback.xml b/xml-modules/jaxb/src/main/resources/logback.xml
similarity index 100%
rename from jaxb/src/main/resources/logback.xml
rename to xml-modules/jaxb/src/main/resources/logback.xml
diff --git a/jaxb/src/main/resources/user.xsd b/xml-modules/jaxb/src/main/resources/user.xsd
similarity index 100%
rename from jaxb/src/main/resources/user.xsd
rename to xml-modules/jaxb/src/main/resources/user.xsd
diff --git a/jaxb/src/test/java/com/baeldung/jaxb/dateunmarshalling/JaxbDateUnmarshallingUnitTest.java b/xml-modules/jaxb/src/test/java/com/baeldung/jaxb/dateunmarshalling/JaxbDateUnmarshallingUnitTest.java
similarity index 100%
rename from jaxb/src/test/java/com/baeldung/jaxb/dateunmarshalling/JaxbDateUnmarshallingUnitTest.java
rename to xml-modules/jaxb/src/test/java/com/baeldung/jaxb/dateunmarshalling/JaxbDateUnmarshallingUnitTest.java
diff --git a/jaxb/src/test/java/com/baeldung/jaxb/test/JaxbIntegrationTest.java b/xml-modules/jaxb/src/test/java/com/baeldung/jaxb/test/JaxbIntegrationTest.java
similarity index 100%
rename from jaxb/src/test/java/com/baeldung/jaxb/test/JaxbIntegrationTest.java
rename to xml-modules/jaxb/src/test/java/com/baeldung/jaxb/test/JaxbIntegrationTest.java
diff --git a/jaxb/src/test/resources/book.xml b/xml-modules/jaxb/src/test/resources/book.xml
similarity index 100%
rename from jaxb/src/test/resources/book.xml
rename to xml-modules/jaxb/src/test/resources/book.xml
diff --git a/jaxb/src/test/resources/sample_book.xml b/xml-modules/jaxb/src/test/resources/sample_book.xml
similarity index 100%
rename from jaxb/src/test/resources/sample_book.xml
rename to xml-modules/jaxb/src/test/resources/sample_book.xml
diff --git a/xml-modules/pom.xml b/xml-modules/pom.xml
new file mode 100644
index 000000000000..4d3dab579f55
--- /dev/null
+++ b/xml-modules/pom.xml
@@ -0,0 +1,24 @@
+
+
+ 4.0.0
+ xml-modules
+ pom
+ xml-modules
+
+
+ parent-modules
+ com.baeldung
+ 1.0.0-SNAPSHOT
+
+
+
+ jaxb
+ xml
+ xml-2
+ xml-3
+ xstream
+
+
+
diff --git a/xml-2/.gitignore b/xml-modules/xml-2/.gitignore
similarity index 100%
rename from xml-2/.gitignore
rename to xml-modules/xml-2/.gitignore
diff --git a/xml-2/pom.xml b/xml-modules/xml-2/pom.xml
similarity index 99%
rename from xml-2/pom.xml
rename to xml-modules/xml-2/pom.xml
index 3d837ea19db3..f3944b38f62b 100644
--- a/xml-2/pom.xml
+++ b/xml-modules/xml-2/pom.xml
@@ -9,7 +9,7 @@
com.baeldung
- parent-modules
+ xml-modules
1.0.0-SNAPSHOT
diff --git a/xml-2/src/main/java/com/baeldung/xml/XMLDocumentWriter.java b/xml-modules/xml-2/src/main/java/com/baeldung/xml/XMLDocumentWriter.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xml/XMLDocumentWriter.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xml/XMLDocumentWriter.java
diff --git a/xml-2/src/main/java/com/baeldung/xml/attribute/Dom4jTransformer.java b/xml-modules/xml-2/src/main/java/com/baeldung/xml/attribute/Dom4jTransformer.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xml/attribute/Dom4jTransformer.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xml/attribute/Dom4jTransformer.java
diff --git a/xml-2/src/main/java/com/baeldung/xml/attribute/JaxpTransformer.java b/xml-modules/xml-2/src/main/java/com/baeldung/xml/attribute/JaxpTransformer.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xml/attribute/JaxpTransformer.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xml/attribute/JaxpTransformer.java
diff --git a/xml-2/src/main/java/com/baeldung/xml/attribute/JooxTransformer.java b/xml-modules/xml-2/src/main/java/com/baeldung/xml/attribute/JooxTransformer.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xml/attribute/JooxTransformer.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xml/attribute/JooxTransformer.java
diff --git a/xml-2/src/main/java/com/baeldung/xml/attribute/jmh/AttributeBenchMark.java b/xml-modules/xml-2/src/main/java/com/baeldung/xml/attribute/jmh/AttributeBenchMark.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xml/attribute/jmh/AttributeBenchMark.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xml/attribute/jmh/AttributeBenchMark.java
diff --git a/xml-2/src/main/java/com/baeldung/xml/jibx/Customer.java b/xml-modules/xml-2/src/main/java/com/baeldung/xml/jibx/Customer.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xml/jibx/Customer.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xml/jibx/Customer.java
diff --git a/xml-2/src/main/java/com/baeldung/xml/jibx/Identity.java b/xml-modules/xml-2/src/main/java/com/baeldung/xml/jibx/Identity.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xml/jibx/Identity.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xml/jibx/Identity.java
diff --git a/xml-2/src/main/java/com/baeldung/xml/jibx/Person.java b/xml-modules/xml-2/src/main/java/com/baeldung/xml/jibx/Person.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xml/jibx/Person.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xml/jibx/Person.java
diff --git a/xml-2/src/main/java/com/baeldung/xml/jibx/Phone.java b/xml-modules/xml-2/src/main/java/com/baeldung/xml/jibx/Phone.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xml/jibx/Phone.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xml/jibx/Phone.java
diff --git a/xml-2/src/main/java/com/baeldung/xml/tohashmap/Employee.java b/xml-modules/xml-2/src/main/java/com/baeldung/xml/tohashmap/Employee.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xml/tohashmap/Employee.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xml/tohashmap/Employee.java
diff --git a/xml-2/src/main/java/com/baeldung/xml/tohashmap/Employees.java b/xml-modules/xml-2/src/main/java/com/baeldung/xml/tohashmap/Employees.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xml/tohashmap/Employees.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xml/tohashmap/Employees.java
diff --git a/xml-2/src/main/java/com/baeldung/xml/tohashmap/XmlToHashMap.java b/xml-modules/xml-2/src/main/java/com/baeldung/xml/tohashmap/XmlToHashMap.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xml/tohashmap/XmlToHashMap.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xml/tohashmap/XmlToHashMap.java
diff --git a/xml-2/src/main/java/com/baeldung/xml/xml2csv/Xml2CsvExample.java b/xml-modules/xml-2/src/main/java/com/baeldung/xml/xml2csv/Xml2CsvExample.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xml/xml2csv/Xml2CsvExample.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xml/xml2csv/Xml2CsvExample.java
diff --git a/xml-2/src/main/java/com/baeldung/xml/xml2pdf/XmlToPdfConverter.java b/xml-modules/xml-2/src/main/java/com/baeldung/xml/xml2pdf/XmlToPdfConverter.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xml/xml2pdf/XmlToPdfConverter.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xml/xml2pdf/XmlToPdfConverter.java
diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/Application.java b/xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/Application.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xmlhtml/Application.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/Application.java
diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/Constants.java b/xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/Constants.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xmlhtml/Constants.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/Constants.java
diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformer.java b/xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformer.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformer.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformer.java
diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/helpers/XMLRunner.java b/xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/helpers/XMLRunner.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xmlhtml/helpers/XMLRunner.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/helpers/XMLRunner.java
diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/helpers/jaxb/JAXBHelper.java b/xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/helpers/jaxb/JAXBHelper.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xmlhtml/helpers/jaxb/JAXBHelper.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/helpers/jaxb/JAXBHelper.java
diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/jaxp/JaxpTransformer.java b/xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/jaxp/JaxpTransformer.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xmlhtml/jaxp/JaxpTransformer.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/jaxp/JaxpTransformer.java
diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/mustache/MustacheTransformer.java b/xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/mustache/MustacheTransformer.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xmlhtml/mustache/MustacheTransformer.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/mustache/MustacheTransformer.java
diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/ExampleHTML.java b/xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/ExampleHTML.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/ExampleHTML.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/ExampleHTML.java
diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/Body.java b/xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/Body.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/Body.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/Body.java
diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/CustomElement.java b/xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/CustomElement.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/CustomElement.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/CustomElement.java
diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/Meta.java b/xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/Meta.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/Meta.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/Meta.java
diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/NestedElement.java b/xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/NestedElement.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/NestedElement.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/NestedElement.java
diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/XMLExample.java b/xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/XMLExample.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/XMLExample.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/XMLExample.java
diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/Ancestor.java b/xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/Ancestor.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/Ancestor.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/Ancestor.java
diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantOne.java b/xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantOne.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantOne.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantOne.java
diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantThree.java b/xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantThree.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantThree.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantThree.java
diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantTwo.java b/xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantTwo.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantTwo.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantTwo.java
diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/stax/StaxTransformer.java b/xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/stax/StaxTransformer.java
similarity index 100%
rename from xml-2/src/main/java/com/baeldung/xmlhtml/stax/StaxTransformer.java
rename to xml-modules/xml-2/src/main/java/com/baeldung/xmlhtml/stax/StaxTransformer.java
diff --git a/xml-2/src/main/resources/customer-binding.xml b/xml-modules/xml-2/src/main/resources/customer-binding.xml
similarity index 100%
rename from xml-2/src/main/resources/customer-binding.xml
rename to xml-modules/xml-2/src/main/resources/customer-binding.xml
diff --git a/xml-2/src/main/resources/log4j2.xml b/xml-modules/xml-2/src/main/resources/log4j2.xml
similarity index 96%
rename from xml-2/src/main/resources/log4j2.xml
rename to xml-modules/xml-2/src/main/resources/log4j2.xml
index f022ab633b56..8f7a1675745d 100644
--- a/xml-2/src/main/resources/log4j2.xml
+++ b/xml-modules/xml-2/src/main/resources/log4j2.xml
@@ -1,13 +1,13 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/xml-2/src/main/resources/logback.xml b/xml-modules/xml-2/src/main/resources/logback.xml
similarity index 100%
rename from xml-2/src/main/resources/logback.xml
rename to xml-modules/xml-2/src/main/resources/logback.xml
diff --git a/xml-2/src/main/resources/xml/attribute.xml b/xml-modules/xml-2/src/main/resources/xml/attribute.xml
similarity index 100%
rename from xml-2/src/main/resources/xml/attribute.xml
rename to xml-modules/xml-2/src/main/resources/xml/attribute.xml
diff --git a/xml-2/src/main/resources/xml/attribute_expected.xml b/xml-modules/xml-2/src/main/resources/xml/attribute_expected.xml
similarity index 100%
rename from xml-2/src/main/resources/xml/attribute_expected.xml
rename to xml-modules/xml-2/src/main/resources/xml/attribute_expected.xml
diff --git a/xml-2/src/main/resources/xml/emails.xml b/xml-modules/xml-2/src/main/resources/xml/emails.xml
similarity index 100%
rename from xml-2/src/main/resources/xml/emails.xml
rename to xml-modules/xml-2/src/main/resources/xml/emails.xml
diff --git a/xml-2/src/main/resources/xml/in.xml b/xml-modules/xml-2/src/main/resources/xml/in.xml
similarity index 100%
rename from xml-2/src/main/resources/xml/in.xml
rename to xml-modules/xml-2/src/main/resources/xml/in.xml
diff --git a/xml-2/src/main/resources/xml/jaxb.html b/xml-modules/xml-2/src/main/resources/xml/jaxb.html
similarity index 100%
rename from xml-2/src/main/resources/xml/jaxb.html
rename to xml-modules/xml-2/src/main/resources/xml/jaxb.html
diff --git a/xml-2/src/main/resources/xml/jaxp.html b/xml-modules/xml-2/src/main/resources/xml/jaxp.html
similarity index 100%
rename from xml-2/src/main/resources/xml/jaxp.html
rename to xml-modules/xml-2/src/main/resources/xml/jaxp.html
diff --git a/xml-2/src/main/resources/xml/stax.html b/xml-modules/xml-2/src/main/resources/xml/stax.html
similarity index 100%
rename from xml-2/src/main/resources/xml/stax.html
rename to xml-modules/xml-2/src/main/resources/xml/stax.html
diff --git a/xml-2/src/main/resources/xml/xmltohashmap/test.xml b/xml-modules/xml-2/src/main/resources/xml/xmltohashmap/test.xml
similarity index 100%
rename from xml-2/src/main/resources/xml/xmltohashmap/test.xml
rename to xml-modules/xml-2/src/main/resources/xml/xmltohashmap/test.xml
diff --git a/xml-2/src/main/resources/xml2csv/data.xml b/xml-modules/xml-2/src/main/resources/xml2csv/data.xml
similarity index 100%
rename from xml-2/src/main/resources/xml2csv/data.xml
rename to xml-modules/xml-2/src/main/resources/xml2csv/data.xml
diff --git a/xml-2/src/main/resources/xml2csv/style.xsl b/xml-modules/xml-2/src/main/resources/xml2csv/style.xsl
similarity index 100%
rename from xml-2/src/main/resources/xml2csv/style.xsl
rename to xml-modules/xml-2/src/main/resources/xml2csv/style.xsl
diff --git a/xml-2/src/main/resources/xmltopdf/data-input.xml b/xml-modules/xml-2/src/main/resources/xmltopdf/data-input.xml
similarity index 100%
rename from xml-2/src/main/resources/xmltopdf/data-input.xml
rename to xml-modules/xml-2/src/main/resources/xmltopdf/data-input.xml
diff --git a/xml-2/src/main/resources/xmltopdf/style.xsl b/xml-modules/xml-2/src/main/resources/xmltopdf/style.xsl
similarity index 100%
rename from xml-2/src/main/resources/xmltopdf/style.xsl
rename to xml-modules/xml-2/src/main/resources/xmltopdf/style.xsl
diff --git a/xml-2/src/test/java/com/baeldung/xml/XMLDocumentWriterUnitTest.java b/xml-modules/xml-2/src/test/java/com/baeldung/xml/XMLDocumentWriterUnitTest.java
similarity index 100%
rename from xml-2/src/test/java/com/baeldung/xml/XMLDocumentWriterUnitTest.java
rename to xml-modules/xml-2/src/test/java/com/baeldung/xml/XMLDocumentWriterUnitTest.java
diff --git a/xml-2/src/test/java/com/baeldung/xml/attribute/Dom4jProcessorUnitTest.java b/xml-modules/xml-2/src/test/java/com/baeldung/xml/attribute/Dom4jProcessorUnitTest.java
similarity index 100%
rename from xml-2/src/test/java/com/baeldung/xml/attribute/Dom4jProcessorUnitTest.java
rename to xml-modules/xml-2/src/test/java/com/baeldung/xml/attribute/Dom4jProcessorUnitTest.java
diff --git a/xml-2/src/test/java/com/baeldung/xml/attribute/JaxpProcessorUnitTest.java b/xml-modules/xml-2/src/test/java/com/baeldung/xml/attribute/JaxpProcessorUnitTest.java
similarity index 100%
rename from xml-2/src/test/java/com/baeldung/xml/attribute/JaxpProcessorUnitTest.java
rename to xml-modules/xml-2/src/test/java/com/baeldung/xml/attribute/JaxpProcessorUnitTest.java
diff --git a/xml-2/src/test/java/com/baeldung/xml/attribute/JooxProcessorUnitTest.java b/xml-modules/xml-2/src/test/java/com/baeldung/xml/attribute/JooxProcessorUnitTest.java
similarity index 100%
rename from xml-2/src/test/java/com/baeldung/xml/attribute/JooxProcessorUnitTest.java
rename to xml-modules/xml-2/src/test/java/com/baeldung/xml/attribute/JooxProcessorUnitTest.java
diff --git a/xml-2/src/test/java/com/baeldung/xml/invalidcharacters/InvalidCharactersUnitTest.java b/xml-modules/xml-2/src/test/java/com/baeldung/xml/invalidcharacters/InvalidCharactersUnitTest.java
similarity index 100%
rename from xml-2/src/test/java/com/baeldung/xml/invalidcharacters/InvalidCharactersUnitTest.java
rename to xml-modules/xml-2/src/test/java/com/baeldung/xml/invalidcharacters/InvalidCharactersUnitTest.java
diff --git a/xml-2/src/test/java/com/baeldung/xml/jibx/CustomerUnitTest.java b/xml-modules/xml-2/src/test/java/com/baeldung/xml/jibx/CustomerUnitTest.java
similarity index 100%
rename from xml-2/src/test/java/com/baeldung/xml/jibx/CustomerUnitTest.java
rename to xml-modules/xml-2/src/test/java/com/baeldung/xml/jibx/CustomerUnitTest.java
diff --git a/xml-2/src/test/java/com/baeldung/xml/tohashmap/XmlToHashMapUnitTest.java b/xml-modules/xml-2/src/test/java/com/baeldung/xml/tohashmap/XmlToHashMapUnitTest.java
similarity index 100%
rename from xml-2/src/test/java/com/baeldung/xml/tohashmap/XmlToHashMapUnitTest.java
rename to xml-modules/xml-2/src/test/java/com/baeldung/xml/tohashmap/XmlToHashMapUnitTest.java
diff --git a/xml-2/src/test/java/com/baeldung/xml/xml2csv/Xml2CsvExampleUnitTest.java b/xml-modules/xml-2/src/test/java/com/baeldung/xml/xml2csv/Xml2CsvExampleUnitTest.java
similarity index 100%
rename from xml-2/src/test/java/com/baeldung/xml/xml2csv/Xml2CsvExampleUnitTest.java
rename to xml-modules/xml-2/src/test/java/com/baeldung/xml/xml2csv/Xml2CsvExampleUnitTest.java
diff --git a/xml-2/src/test/java/com/baeldung/xml/xml2document/XMLStringToDocumentObjectUnitTest.java b/xml-modules/xml-2/src/test/java/com/baeldung/xml/xml2document/XMLStringToDocumentObjectUnitTest.java
similarity index 97%
rename from xml-2/src/test/java/com/baeldung/xml/xml2document/XMLStringToDocumentObjectUnitTest.java
rename to xml-modules/xml-2/src/test/java/com/baeldung/xml/xml2document/XMLStringToDocumentObjectUnitTest.java
index 9d658b21525c..ef6fdec3925b 100644
--- a/xml-2/src/test/java/com/baeldung/xml/xml2document/XMLStringToDocumentObjectUnitTest.java
+++ b/xml-modules/xml-2/src/test/java/com/baeldung/xml/xml2document/XMLStringToDocumentObjectUnitTest.java
@@ -1,37 +1,37 @@
-package com.baeldung.xml.xml2document;
-
-import org.junit.Test;
-import org.w3c.dom.*;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import java.io.IOException;
-import java.io.StringReader;
-
-import static org.junit.Assert.assertEquals;
-
-public class XMLStringToDocumentObjectUnitTest {
- @Test
- public void givenValidXMLString_whenParsing_thenDocumentIsCorrect() throws ParserConfigurationException {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- DocumentBuilder builder = factory.newDocumentBuilder();
- String xmlString = "XML Parsing Example";
- InputSource is = new InputSource(new StringReader(xmlString));
- Document xmlDoc = null;
- try {
- xmlDoc = builder.parse(is);
- } catch (SAXException e) {
- throw new RuntimeException(e);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
-
- assertEquals("root", xmlDoc.getDocumentElement().getNodeName());
- assertEquals("element", xmlDoc.getDocumentElement().getElementsByTagName("element").item(0).getNodeName());
- assertEquals("XML Parsing Example", xmlDoc.getDocumentElement().getElementsByTagName("element").item(0).getTextContent());
- }
-}
+package com.baeldung.xml.xml2document;
+
+import org.junit.Test;
+import org.w3c.dom.*;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import java.io.IOException;
+import java.io.StringReader;
+
+import static org.junit.Assert.assertEquals;
+
+public class XMLStringToDocumentObjectUnitTest {
+ @Test
+ public void givenValidXMLString_whenParsing_thenDocumentIsCorrect() throws ParserConfigurationException {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ String xmlString = "XML Parsing Example";
+ InputSource is = new InputSource(new StringReader(xmlString));
+ Document xmlDoc = null;
+ try {
+ xmlDoc = builder.parse(is);
+ } catch (SAXException e) {
+ throw new RuntimeException(e);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+
+ assertEquals("root", xmlDoc.getDocumentElement().getNodeName());
+ assertEquals("element", xmlDoc.getDocumentElement().getElementsByTagName("element").item(0).getNodeName());
+ assertEquals("XML Parsing Example", xmlDoc.getDocumentElement().getElementsByTagName("element").item(0).getTextContent());
+ }
+}
diff --git a/xml-2/src/test/java/com/baeldung/xml/xml2pdf/XmlToPdfConverterUnitTest.java b/xml-modules/xml-2/src/test/java/com/baeldung/xml/xml2pdf/XmlToPdfConverterUnitTest.java
similarity index 100%
rename from xml-2/src/test/java/com/baeldung/xml/xml2pdf/XmlToPdfConverterUnitTest.java
rename to xml-modules/xml-2/src/test/java/com/baeldung/xml/xml2pdf/XmlToPdfConverterUnitTest.java
diff --git a/xml-2/src/test/java/com/baeldung/xmlhtml/delhtmltags/RemoveHtmlTagsLiveTest.java b/xml-modules/xml-2/src/test/java/com/baeldung/xmlhtml/delhtmltags/RemoveHtmlTagsLiveTest.java
similarity index 100%
rename from xml-2/src/test/java/com/baeldung/xmlhtml/delhtmltags/RemoveHtmlTagsLiveTest.java
rename to xml-modules/xml-2/src/test/java/com/baeldung/xmlhtml/delhtmltags/RemoveHtmlTagsLiveTest.java
diff --git a/xml-2/src/test/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformerUnitTest.java b/xml-modules/xml-2/src/test/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformerUnitTest.java
similarity index 100%
rename from xml-2/src/test/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformerUnitTest.java
rename to xml-modules/xml-2/src/test/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformerUnitTest.java
diff --git a/xml-2/src/test/java/com/baeldung/xmlhtml/jaxp/JaxpTransformerUnitTest.java b/xml-modules/xml-2/src/test/java/com/baeldung/xmlhtml/jaxp/JaxpTransformerUnitTest.java
similarity index 100%
rename from xml-2/src/test/java/com/baeldung/xmlhtml/jaxp/JaxpTransformerUnitTest.java
rename to xml-modules/xml-2/src/test/java/com/baeldung/xmlhtml/jaxp/JaxpTransformerUnitTest.java
diff --git a/xml-2/src/test/java/com/baeldung/xmlhtml/mustache/MustacheTransformerUnitTest.java b/xml-modules/xml-2/src/test/java/com/baeldung/xmlhtml/mustache/MustacheTransformerUnitTest.java
similarity index 100%
rename from xml-2/src/test/java/com/baeldung/xmlhtml/mustache/MustacheTransformerUnitTest.java
rename to xml-modules/xml-2/src/test/java/com/baeldung/xmlhtml/mustache/MustacheTransformerUnitTest.java
diff --git a/xml-2/src/test/java/com/baeldung/xmlhtml/stax/StaxTransformerUnitTest.java b/xml-modules/xml-2/src/test/java/com/baeldung/xmlhtml/stax/StaxTransformerUnitTest.java
similarity index 100%
rename from xml-2/src/test/java/com/baeldung/xmlhtml/stax/StaxTransformerUnitTest.java
rename to xml-modules/xml-2/src/test/java/com/baeldung/xmlhtml/stax/StaxTransformerUnitTest.java
diff --git a/xml-2/src/test/resources/Customer1.xml b/xml-modules/xml-2/src/test/resources/Customer1.xml
similarity index 100%
rename from xml-2/src/test/resources/Customer1.xml
rename to xml-modules/xml-2/src/test/resources/Customer1.xml
diff --git a/xml-2/src/test/resources/templates/freemarker.html b/xml-modules/xml-2/src/test/resources/templates/freemarker.html
similarity index 100%
rename from xml-2/src/test/resources/templates/freemarker.html
rename to xml-modules/xml-2/src/test/resources/templates/freemarker.html
diff --git a/xml-2/src/test/resources/templates/template.mustache b/xml-modules/xml-2/src/test/resources/templates/template.mustache
similarity index 100%
rename from xml-2/src/test/resources/templates/template.mustache
rename to xml-modules/xml-2/src/test/resources/templates/template.mustache
diff --git a/xml-2/src/test/resources/xml/attribute.xml b/xml-modules/xml-2/src/test/resources/xml/attribute.xml
similarity index 100%
rename from xml-2/src/test/resources/xml/attribute.xml
rename to xml-modules/xml-2/src/test/resources/xml/attribute.xml
diff --git a/xml-2/src/test/resources/xml/attribute_expected.xml b/xml-modules/xml-2/src/test/resources/xml/attribute_expected.xml
similarity index 100%
rename from xml-2/src/test/resources/xml/attribute_expected.xml
rename to xml-modules/xml-2/src/test/resources/xml/attribute_expected.xml
diff --git a/xml-2/src/test/resources/xml/xee_attribute.xml b/xml-modules/xml-2/src/test/resources/xml/xee_attribute.xml
similarity index 100%
rename from xml-2/src/test/resources/xml/xee_attribute.xml
rename to xml-modules/xml-2/src/test/resources/xml/xee_attribute.xml
diff --git a/xml-2/src/test/resources/xmlhtml/delhtmltags/example1.html b/xml-modules/xml-2/src/test/resources/xmlhtml/delhtmltags/example1.html
similarity index 100%
rename from xml-2/src/test/resources/xmlhtml/delhtmltags/example1.html
rename to xml-modules/xml-2/src/test/resources/xmlhtml/delhtmltags/example1.html
diff --git a/xml-2/src/test/resources/xmlhtml/delhtmltags/example2.html b/xml-modules/xml-2/src/test/resources/xmlhtml/delhtmltags/example2.html
similarity index 100%
rename from xml-2/src/test/resources/xmlhtml/delhtmltags/example2.html
rename to xml-modules/xml-2/src/test/resources/xmlhtml/delhtmltags/example2.html
diff --git a/xml-2/src/test/resources/xmlhtml/notification.html b/xml-modules/xml-2/src/test/resources/xmlhtml/notification.html
similarity index 100%
rename from xml-2/src/test/resources/xmlhtml/notification.html
rename to xml-modules/xml-2/src/test/resources/xmlhtml/notification.html
diff --git a/xml-2/src/test/resources/xmlhtml/notification.xml b/xml-modules/xml-2/src/test/resources/xmlhtml/notification.xml
similarity index 100%
rename from xml-2/src/test/resources/xmlhtml/notification.xml
rename to xml-modules/xml-2/src/test/resources/xmlhtml/notification.xml
diff --git a/xml-3/pom.xml b/xml-modules/xml-3/pom.xml
similarity index 93%
rename from xml-3/pom.xml
rename to xml-modules/xml-3/pom.xml
index 3035f36a4f59..ddb87e781906 100644
--- a/xml-3/pom.xml
+++ b/xml-modules/xml-3/pom.xml
@@ -1,35 +1,35 @@
-
-
- 4.0.0
- xml-3
- 0.1-SNAPSHOT
- xml-3
-
-
- com.baeldung
- parent-modules
- 1.0.0-SNAPSHOT
-
-
-
- xml-3
-
-
- src/main/resources
- true
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
-
-
-
+
+
+ 4.0.0
+ xml-3
+ 0.1-SNAPSHOT
+ xml-3
+
+
+ com.baeldung
+ xml-modules
+ 1.0.0-SNAPSHOT
+
+
+
+ xml-3
+
+
+ src/main/resources
+ true
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+
+
diff --git a/xml-3/src/test/java/com/baeldung/xml/XmlDocumentUnitTest.java b/xml-modules/xml-3/src/test/java/com/baeldung/xml/XmlDocumentUnitTest.java
similarity index 97%
rename from xml-3/src/test/java/com/baeldung/xml/XmlDocumentUnitTest.java
rename to xml-modules/xml-3/src/test/java/com/baeldung/xml/XmlDocumentUnitTest.java
index 669e7c8cb05a..1d50cf331ba5 100644
--- a/xml-3/src/test/java/com/baeldung/xml/XmlDocumentUnitTest.java
+++ b/xml-modules/xml-3/src/test/java/com/baeldung/xml/XmlDocumentUnitTest.java
@@ -1,107 +1,107 @@
-package com.baeldung.xml;
-
-import org.junit.jupiter.api.Test;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXParseException;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.io.StringReader;
-import java.nio.charset.StandardCharsets;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-public class XmlDocumentUnitTest {
-
- @Test
- public void givenXmlString_whenConvertToDocumentViaString_thenSuccess() throws Exception {
- String xmlString = "Example";
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- DocumentBuilder builder = factory.newDocumentBuilder();
-
- Document document = builder.parse(new InputSource(new StringReader(xmlString)));
-
- assertNotNull(document);
- assertEquals("root", document.getDocumentElement().getNodeName());
-
- Element rootElement = document.getDocumentElement();
- var childElements = rootElement.getElementsByTagName("child");
-
- assertNotNull(childElements);
- assertEquals(1, childElements.getLength());
- assertEquals("Example", childElements.item(0).getTextContent());
- }
-
- @Test
- public void givenDocument_whenInsertNode_thenNodeAdded() throws Exception {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- DocumentBuilder builder = factory.newDocumentBuilder();
-
- Document existingDocument = builder.newDocument();
- Element rootElement = existingDocument.createElement("existingRoot");
- existingDocument.appendChild(rootElement);
-
- String xmlString = "Example";
- Document newDocument = builder.parse(new InputSource(new StringReader(xmlString)));
-
- Element newNode = (Element) existingDocument.importNode(newDocument.getDocumentElement(), true);
- existingDocument.getDocumentElement().appendChild(newNode);
-
- assertNotNull(existingDocument);
- assertEquals(1, existingDocument.getDocumentElement().getChildNodes().getLength());
- assertEquals("child", existingDocument.getDocumentElement().getChildNodes().item(0).getNodeName());
- }
-
- @Test
- public void givenInvalidXmlString_whenConvertToDocument_thenThrowException() throws ParserConfigurationException {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- DocumentBuilder builder = factory.newDocumentBuilder();
-
- String invalidXmlString = "Example {
- builder.parse(new InputSource(new StringReader(invalidXmlString)));
- });
- }
-
- @Test
- public void givenXmlString_whenConvertToDocumentViaCharStream_thenSuccess() throws Exception {
- String xmlString = "Example PostJohn Doe";
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- DocumentBuilder builder = factory.newDocumentBuilder();
-
- InputSource inputSource = new InputSource(new StringReader(xmlString));
- Document document = builder.parse(inputSource);
-
- assertNotNull(document);
- assertEquals("posts", document.getDocumentElement().getNodeName());
-
- Element rootElement = document.getDocumentElement();
- var childElements = rootElement.getElementsByTagName("post");
- assertNotNull(childElements);
- assertEquals(1, childElements.getLength());
- }
-
- @Test
- public void givenXmlString_whenConvertToDocumentViaByteArray_thenSuccess() throws Exception {
- String xmlString = "Example PostJohn Doe";
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- DocumentBuilder builder = factory.newDocumentBuilder();
-
- InputStream inputStream = new ByteArrayInputStream(xmlString.getBytes(StandardCharsets.UTF_8));
- Document document = builder.parse(inputStream);
-
- assertNotNull(document);
- assertEquals("posts", document.getDocumentElement().getNodeName());
-
- Element rootElement = document.getDocumentElement();
- var childElements = rootElement.getElementsByTagName("post");
- assertNotNull(childElements);
- assertEquals(1, childElements.getLength());
- }
-
-}
+package com.baeldung.xml;
+
+import org.junit.jupiter.api.Test;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXParseException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.StringReader;
+import java.nio.charset.StandardCharsets;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+public class XmlDocumentUnitTest {
+
+ @Test
+ public void givenXmlString_whenConvertToDocumentViaString_thenSuccess() throws Exception {
+ String xmlString = "Example";
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = factory.newDocumentBuilder();
+
+ Document document = builder.parse(new InputSource(new StringReader(xmlString)));
+
+ assertNotNull(document);
+ assertEquals("root", document.getDocumentElement().getNodeName());
+
+ Element rootElement = document.getDocumentElement();
+ var childElements = rootElement.getElementsByTagName("child");
+
+ assertNotNull(childElements);
+ assertEquals(1, childElements.getLength());
+ assertEquals("Example", childElements.item(0).getTextContent());
+ }
+
+ @Test
+ public void givenDocument_whenInsertNode_thenNodeAdded() throws Exception {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = factory.newDocumentBuilder();
+
+ Document existingDocument = builder.newDocument();
+ Element rootElement = existingDocument.createElement("existingRoot");
+ existingDocument.appendChild(rootElement);
+
+ String xmlString = "Example";
+ Document newDocument = builder.parse(new InputSource(new StringReader(xmlString)));
+
+ Element newNode = (Element) existingDocument.importNode(newDocument.getDocumentElement(), true);
+ existingDocument.getDocumentElement().appendChild(newNode);
+
+ assertNotNull(existingDocument);
+ assertEquals(1, existingDocument.getDocumentElement().getChildNodes().getLength());
+ assertEquals("child", existingDocument.getDocumentElement().getChildNodes().item(0).getNodeName());
+ }
+
+ @Test
+ public void givenInvalidXmlString_whenConvertToDocument_thenThrowException() throws ParserConfigurationException {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = factory.newDocumentBuilder();
+
+ String invalidXmlString = "Example {
+ builder.parse(new InputSource(new StringReader(invalidXmlString)));
+ });
+ }
+
+ @Test
+ public void givenXmlString_whenConvertToDocumentViaCharStream_thenSuccess() throws Exception {
+ String xmlString = "Example PostJohn Doe";
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = factory.newDocumentBuilder();
+
+ InputSource inputSource = new InputSource(new StringReader(xmlString));
+ Document document = builder.parse(inputSource);
+
+ assertNotNull(document);
+ assertEquals("posts", document.getDocumentElement().getNodeName());
+
+ Element rootElement = document.getDocumentElement();
+ var childElements = rootElement.getElementsByTagName("post");
+ assertNotNull(childElements);
+ assertEquals(1, childElements.getLength());
+ }
+
+ @Test
+ public void givenXmlString_whenConvertToDocumentViaByteArray_thenSuccess() throws Exception {
+ String xmlString = "Example PostJohn Doe";
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = factory.newDocumentBuilder();
+
+ InputStream inputStream = new ByteArrayInputStream(xmlString.getBytes(StandardCharsets.UTF_8));
+ Document document = builder.parse(inputStream);
+
+ assertNotNull(document);
+ assertEquals("posts", document.getDocumentElement().getNodeName());
+
+ Element rootElement = document.getDocumentElement();
+ var childElements = rootElement.getElementsByTagName("post");
+ assertNotNull(childElements);
+ assertEquals(1, childElements.getLength());
+ }
+
+}
diff --git a/xml/.gitignore b/xml-modules/xml/.gitignore
similarity index 100%
rename from xml/.gitignore
rename to xml-modules/xml/.gitignore
diff --git a/xml/pom.xml b/xml-modules/xml/pom.xml
similarity index 99%
rename from xml/pom.xml
rename to xml-modules/xml/pom.xml
index b934e5f72271..fa7c260699d8 100644
--- a/xml/pom.xml
+++ b/xml-modules/xml/pom.xml
@@ -9,7 +9,7 @@
com.baeldung
- parent-modules
+ xml-modules
1.0.0-SNAPSHOT
diff --git a/xml/src/main/java/com/baeldung/sax/SaxParserMain.java b/xml-modules/xml/src/main/java/com/baeldung/sax/SaxParserMain.java
similarity index 96%
rename from xml/src/main/java/com/baeldung/sax/SaxParserMain.java
rename to xml-modules/xml/src/main/java/com/baeldung/sax/SaxParserMain.java
index 34a46fe46915..492e2298006d 100644
--- a/xml/src/main/java/com/baeldung/sax/SaxParserMain.java
+++ b/xml-modules/xml/src/main/java/com/baeldung/sax/SaxParserMain.java
@@ -1,120 +1,120 @@
-package com.baeldung.sax;
-
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-public class SaxParserMain {
- public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
- SAXParserFactory factory = SAXParserFactory.newInstance();
- SAXParser saxParser = factory.newSAXParser();
-
- BaeldungHandler baeldungHandler = new BaeldungHandler();
- saxParser.parse("xml/src/main/resources/sax/baeldung.xml", baeldungHandler);
- System.out.println(baeldungHandler.getWebsite());
- }
-
- public static class BaeldungHandler extends DefaultHandler {
- private static final String ARTICLES = "articles";
- private static final String ARTICLE = "article";
- private static final String TITLE = "title";
- private static final String CONTENT = "content";
-
- private Baeldung website;
- private StringBuilder elementValue;
-
- @Override
- public void characters(char[] ch, int start, int length) throws SAXException {
- if (elementValue == null) {
- elementValue = new StringBuilder();
- } else {
- elementValue.append(ch, start, length);
- }
- }
-
- @Override
- public void startDocument() throws SAXException {
- website = new Baeldung();
- }
-
- @Override
- public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
- switch (qName) {
- case ARTICLES:
- website.setArticleList(new ArrayList<>());
- break;
- case ARTICLE:
- website.getArticleList().add(new BaeldungArticle());
- break;
- case TITLE:
- elementValue = new StringBuilder();
- break;
- case CONTENT:
- elementValue = new StringBuilder();
- break;
- }
- }
-
- @Override
- public void endElement(String uri, String localName, String qName) throws SAXException {
- switch (qName) {
- case TITLE:
- latestArticle().setTitle(elementValue.toString());
- break;
- case CONTENT:
- latestArticle().setContent(elementValue.toString());
- break;
- }
- }
-
- private BaeldungArticle latestArticle() {
- List articleList = website.getArticleList();
- int latestArticleIndex = articleList.size() - 1;
- return articleList.get(latestArticleIndex);
- }
-
- public Baeldung getWebsite() {
- return website;
- }
- }
-
- public static class Baeldung {
- private List articleList;
-
- public void setArticleList(List articleList) {
- this.articleList = articleList;
- }
-
- public List getArticleList() {
- return this.articleList;
- }
- }
-
- public static class BaeldungArticle {
- private String title;
- private String content;
-
- public void setTitle(String title) {
- this.title = title;
- }
-
- public String getTitle() {
- return this.title;
- }
-
- public void setContent(String content) {
- this.content = content;
- }
-
- public String getContent() {
- return this.content;
- }
- }
-}
+package com.baeldung.sax;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+public class SaxParserMain {
+ public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
+ SAXParserFactory factory = SAXParserFactory.newInstance();
+ SAXParser saxParser = factory.newSAXParser();
+
+ BaeldungHandler baeldungHandler = new BaeldungHandler();
+ saxParser.parse("xml/src/main/resources/sax/baeldung.xml", baeldungHandler);
+ System.out.println(baeldungHandler.getWebsite());
+ }
+
+ public static class BaeldungHandler extends DefaultHandler {
+ private static final String ARTICLES = "articles";
+ private static final String ARTICLE = "article";
+ private static final String TITLE = "title";
+ private static final String CONTENT = "content";
+
+ private Baeldung website;
+ private StringBuilder elementValue;
+
+ @Override
+ public void characters(char[] ch, int start, int length) throws SAXException {
+ if (elementValue == null) {
+ elementValue = new StringBuilder();
+ } else {
+ elementValue.append(ch, start, length);
+ }
+ }
+
+ @Override
+ public void startDocument() throws SAXException {
+ website = new Baeldung();
+ }
+
+ @Override
+ public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
+ switch (qName) {
+ case ARTICLES:
+ website.setArticleList(new ArrayList<>());
+ break;
+ case ARTICLE:
+ website.getArticleList().add(new BaeldungArticle());
+ break;
+ case TITLE:
+ elementValue = new StringBuilder();
+ break;
+ case CONTENT:
+ elementValue = new StringBuilder();
+ break;
+ }
+ }
+
+ @Override
+ public void endElement(String uri, String localName, String qName) throws SAXException {
+ switch (qName) {
+ case TITLE:
+ latestArticle().setTitle(elementValue.toString());
+ break;
+ case CONTENT:
+ latestArticle().setContent(elementValue.toString());
+ break;
+ }
+ }
+
+ private BaeldungArticle latestArticle() {
+ List articleList = website.getArticleList();
+ int latestArticleIndex = articleList.size() - 1;
+ return articleList.get(latestArticleIndex);
+ }
+
+ public Baeldung getWebsite() {
+ return website;
+ }
+ }
+
+ public static class Baeldung {
+ private List articleList;
+
+ public void setArticleList(List articleList) {
+ this.articleList = articleList;
+ }
+
+ public List getArticleList() {
+ return this.articleList;
+ }
+ }
+
+ public static class BaeldungArticle {
+ private String title;
+ private String content;
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getTitle() {
+ return this.title;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ public String getContent() {
+ return this.content;
+ }
+ }
+}
diff --git a/xml/src/main/java/com/baeldung/xml/DefaultParser.java b/xml-modules/xml/src/main/java/com/baeldung/xml/DefaultParser.java
similarity index 100%
rename from xml/src/main/java/com/baeldung/xml/DefaultParser.java
rename to xml-modules/xml/src/main/java/com/baeldung/xml/DefaultParser.java
diff --git a/xml/src/main/java/com/baeldung/xml/Dom4JParser.java b/xml-modules/xml/src/main/java/com/baeldung/xml/Dom4JParser.java
old mode 100755
new mode 100644
similarity index 100%
rename from xml/src/main/java/com/baeldung/xml/Dom4JParser.java
rename to xml-modules/xml/src/main/java/com/baeldung/xml/Dom4JParser.java
diff --git a/xml/src/main/java/com/baeldung/xml/JDomParser.java b/xml-modules/xml/src/main/java/com/baeldung/xml/JDomParser.java
similarity index 100%
rename from xml/src/main/java/com/baeldung/xml/JDomParser.java
rename to xml-modules/xml/src/main/java/com/baeldung/xml/JDomParser.java
diff --git a/xml/src/main/java/com/baeldung/xml/JaxbParser.java b/xml-modules/xml/src/main/java/com/baeldung/xml/JaxbParser.java
similarity index 100%
rename from xml/src/main/java/com/baeldung/xml/JaxbParser.java
rename to xml-modules/xml/src/main/java/com/baeldung/xml/JaxbParser.java
diff --git a/xml/src/main/java/com/baeldung/xml/JaxenDemo.java b/xml-modules/xml/src/main/java/com/baeldung/xml/JaxenDemo.java
similarity index 100%
rename from xml/src/main/java/com/baeldung/xml/JaxenDemo.java
rename to xml-modules/xml/src/main/java/com/baeldung/xml/JaxenDemo.java
diff --git a/xml/src/main/java/com/baeldung/xml/SecureDocumentBuilderFactory.java b/xml-modules/xml/src/main/java/com/baeldung/xml/SecureDocumentBuilderFactory.java
similarity index 100%
rename from xml/src/main/java/com/baeldung/xml/SecureDocumentBuilderFactory.java
rename to xml-modules/xml/src/main/java/com/baeldung/xml/SecureDocumentBuilderFactory.java
diff --git a/xml/src/main/java/com/baeldung/xml/StaxParser.java b/xml-modules/xml/src/main/java/com/baeldung/xml/StaxParser.java
similarity index 100%
rename from xml/src/main/java/com/baeldung/xml/StaxParser.java
rename to xml-modules/xml/src/main/java/com/baeldung/xml/StaxParser.java
diff --git a/xml/src/main/java/com/baeldung/xml/binding/Tutorial.java b/xml-modules/xml/src/main/java/com/baeldung/xml/binding/Tutorial.java
similarity index 100%
rename from xml/src/main/java/com/baeldung/xml/binding/Tutorial.java
rename to xml-modules/xml/src/main/java/com/baeldung/xml/binding/Tutorial.java
diff --git a/xml/src/main/java/com/baeldung/xml/binding/Tutorials.java b/xml-modules/xml/src/main/java/com/baeldung/xml/binding/Tutorials.java
similarity index 100%
rename from xml/src/main/java/com/baeldung/xml/binding/Tutorials.java
rename to xml-modules/xml/src/main/java/com/baeldung/xml/binding/Tutorials.java
diff --git a/xml/src/main/java/com/baeldung/xml/prettyprint/XmlPrettyPrinter.java b/xml-modules/xml/src/main/java/com/baeldung/xml/prettyprint/XmlPrettyPrinter.java
similarity index 100%
rename from xml/src/main/java/com/baeldung/xml/prettyprint/XmlPrettyPrinter.java
rename to xml-modules/xml/src/main/java/com/baeldung/xml/prettyprint/XmlPrettyPrinter.java
diff --git a/xml/src/main/java/com/baeldung/xml/stax/StaxParser.java b/xml-modules/xml/src/main/java/com/baeldung/xml/stax/StaxParser.java
similarity index 97%
rename from xml/src/main/java/com/baeldung/xml/stax/StaxParser.java
rename to xml-modules/xml/src/main/java/com/baeldung/xml/stax/StaxParser.java
index 9e3b5e8b0fb6..a6e9d576310f 100644
--- a/xml/src/main/java/com/baeldung/xml/stax/StaxParser.java
+++ b/xml-modules/xml/src/main/java/com/baeldung/xml/stax/StaxParser.java
@@ -1,74 +1,74 @@
-package com.baeldung.xml.stax;
-
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.util.List;
-import java.util.ArrayList;
-
-import javax.xml.stream.events.XMLEvent;
-import javax.xml.stream.XMLEventReader;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.events.Attribute;
-import javax.xml.stream.events.EndElement;
-import javax.xml.stream.events.StartElement;
-import javax.xml.namespace.QName;
-
-public class StaxParser {
-
- public static List parse(String path) {
- List websites = new ArrayList();
- WebSite website = null;
- XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
- try {
- XMLEventReader reader = xmlInputFactory.createXMLEventReader(new FileInputStream(path));
- while (reader.hasNext()) {
- XMLEvent nextEvent = reader.nextEvent();
- if (nextEvent.isStartElement()) {
- StartElement startElement = nextEvent.asStartElement();
- switch (startElement.getName()
- .getLocalPart()) {
- case "website":
- website = new WebSite();
- Attribute url = startElement.getAttributeByName(new QName("url"));
- if (url != null) {
- website.setUrl(url.getValue());
- }
- break;
- case "name":
- nextEvent = reader.nextEvent();
- website.setName(nextEvent.asCharacters()
- .getData());
- break;
- case "category":
- nextEvent = reader.nextEvent();
- website.setCategory(nextEvent.asCharacters()
- .getData());
- break;
- case "status":
- nextEvent = reader.nextEvent();
- website.setStatus(nextEvent.asCharacters()
- .getData());
- break;
- }
- }
- if (nextEvent.isEndElement()) {
- EndElement endElement = nextEvent.asEndElement();
- if (endElement.getName()
- .getLocalPart()
- .equals("website")) {
- websites.add(website);
- }
- }
- }
- } catch (XMLStreamException xse) {
- System.out.println("XMLStreamException");
- xse.printStackTrace();
- } catch (FileNotFoundException fnfe) {
- System.out.println("FileNotFoundException");
- fnfe.printStackTrace();
- }
- return websites;
- }
-
-}
+package com.baeldung.xml.stax;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.util.List;
+import java.util.ArrayList;
+
+import javax.xml.stream.events.XMLEvent;
+import javax.xml.stream.XMLEventReader;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.events.Attribute;
+import javax.xml.stream.events.EndElement;
+import javax.xml.stream.events.StartElement;
+import javax.xml.namespace.QName;
+
+public class StaxParser {
+
+ public static List parse(String path) {
+ List websites = new ArrayList();
+ WebSite website = null;
+ XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
+ try {
+ XMLEventReader reader = xmlInputFactory.createXMLEventReader(new FileInputStream(path));
+ while (reader.hasNext()) {
+ XMLEvent nextEvent = reader.nextEvent();
+ if (nextEvent.isStartElement()) {
+ StartElement startElement = nextEvent.asStartElement();
+ switch (startElement.getName()
+ .getLocalPart()) {
+ case "website":
+ website = new WebSite();
+ Attribute url = startElement.getAttributeByName(new QName("url"));
+ if (url != null) {
+ website.setUrl(url.getValue());
+ }
+ break;
+ case "name":
+ nextEvent = reader.nextEvent();
+ website.setName(nextEvent.asCharacters()
+ .getData());
+ break;
+ case "category":
+ nextEvent = reader.nextEvent();
+ website.setCategory(nextEvent.asCharacters()
+ .getData());
+ break;
+ case "status":
+ nextEvent = reader.nextEvent();
+ website.setStatus(nextEvent.asCharacters()
+ .getData());
+ break;
+ }
+ }
+ if (nextEvent.isEndElement()) {
+ EndElement endElement = nextEvent.asEndElement();
+ if (endElement.getName()
+ .getLocalPart()
+ .equals("website")) {
+ websites.add(website);
+ }
+ }
+ }
+ } catch (XMLStreamException xse) {
+ System.out.println("XMLStreamException");
+ xse.printStackTrace();
+ } catch (FileNotFoundException fnfe) {
+ System.out.println("FileNotFoundException");
+ fnfe.printStackTrace();
+ }
+ return websites;
+ }
+
+}
diff --git a/xml/src/main/java/com/baeldung/xml/stax/WebSite.java b/xml-modules/xml/src/main/java/com/baeldung/xml/stax/WebSite.java
similarity index 94%
rename from xml/src/main/java/com/baeldung/xml/stax/WebSite.java
rename to xml-modules/xml/src/main/java/com/baeldung/xml/stax/WebSite.java
index 8f7782ab9199..17154ea9375a 100644
--- a/xml/src/main/java/com/baeldung/xml/stax/WebSite.java
+++ b/xml-modules/xml/src/main/java/com/baeldung/xml/stax/WebSite.java
@@ -1,40 +1,40 @@
-package com.baeldung.xml.stax;
-public class WebSite {
-
- private String url;
- private String name;
- private String category;
- private String status;
-
- public String getUrl() {
- return url;
- }
-
- public void setUrl(String url) {
- this.url = url;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getCategory() {
- return category;
- }
-
- public void setCategory(String category) {
- this.category = category;
- }
-
- public String getStatus() {
- return status;
- }
-
- public void setStatus(String status) {
- this.status = status;
- }
-}
+package com.baeldung.xml.stax;
+public class WebSite {
+
+ private String url;
+ private String name;
+ private String category;
+ private String status;
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+}
diff --git a/xml/src/main/java/com/baeldung/xml/validation/XmlErrorHandler.java b/xml-modules/xml/src/main/java/com/baeldung/xml/validation/XmlErrorHandler.java
similarity index 100%
rename from xml/src/main/java/com/baeldung/xml/validation/XmlErrorHandler.java
rename to xml-modules/xml/src/main/java/com/baeldung/xml/validation/XmlErrorHandler.java
diff --git a/xml/src/main/java/com/baeldung/xml/validation/XmlValidator.java b/xml-modules/xml/src/main/java/com/baeldung/xml/validation/XmlValidator.java
similarity index 100%
rename from xml/src/main/java/com/baeldung/xml/validation/XmlValidator.java
rename to xml-modules/xml/src/main/java/com/baeldung/xml/validation/XmlValidator.java
diff --git a/xml/src/main/java/com/baeldung/xml/xml2string/XmlDocumentToString.java b/xml-modules/xml/src/main/java/com/baeldung/xml/xml2string/XmlDocumentToString.java
similarity index 100%
rename from xml/src/main/java/com/baeldung/xml/xml2string/XmlDocumentToString.java
rename to xml-modules/xml/src/main/java/com/baeldung/xml/xml2string/XmlDocumentToString.java
diff --git a/xml/src/main/resources/Order.xsd b/xml-modules/xml/src/main/resources/Order.xsd
similarity index 100%
rename from xml/src/main/resources/Order.xsd
rename to xml-modules/xml/src/main/resources/Order.xsd
diff --git a/xml/src/main/resources/logback.xml b/xml-modules/xml/src/main/resources/logback.xml
similarity index 100%
rename from xml/src/main/resources/logback.xml
rename to xml-modules/xml/src/main/resources/logback.xml
diff --git a/xml/src/main/resources/sax/baeldung.xml b/xml-modules/xml/src/main/resources/sax/baeldung.xml
similarity index 97%
rename from xml/src/main/resources/sax/baeldung.xml
rename to xml-modules/xml/src/main/resources/sax/baeldung.xml
index 6736d5bdca4d..9f642598cbe3 100644
--- a/xml/src/main/resources/sax/baeldung.xml
+++ b/xml-modules/xml/src/main/resources/sax/baeldung.xml
@@ -1,16 +1,16 @@
-
-
-
- Parsing an XML File Using SAX Parser
- SAX Parser's Lorem ipsum...
-
-
- Parsing an XML File Using DOM Parser
- DOM Parser's Lorem ipsum...
-
-
- Parsing an XML File Using StAX Parser
- StAX Parser's Lorem ipsum...
-
-
+
+
+
+ Parsing an XML File Using SAX Parser
+ SAX Parser's Lorem ipsum...
+
+
+ Parsing an XML File Using DOM Parser
+ DOM Parser's Lorem ipsum...
+
+
+ Parsing an XML File Using StAX Parser
+ StAX Parser's Lorem ipsum...
+
+
\ No newline at end of file
diff --git a/xml/src/main/resources/xml/prettyprint.xsl b/xml-modules/xml/src/main/resources/xml/prettyprint.xsl
similarity index 100%
rename from xml/src/main/resources/xml/prettyprint.xsl
rename to xml-modules/xml/src/main/resources/xml/prettyprint.xsl
diff --git a/xml/src/main/resources/xml/validation/baeldung.xml b/xml-modules/xml/src/main/resources/xml/validation/baeldung.xml
similarity index 100%
rename from xml/src/main/resources/xml/validation/baeldung.xml
rename to xml-modules/xml/src/main/resources/xml/validation/baeldung.xml
diff --git a/xml/src/main/resources/xml/validation/full-person.xsd b/xml-modules/xml/src/main/resources/xml/validation/full-person.xsd
similarity index 100%
rename from xml/src/main/resources/xml/validation/full-person.xsd
rename to xml-modules/xml/src/main/resources/xml/validation/full-person.xsd
diff --git a/xml/src/main/resources/xml/validation/person.xsd b/xml-modules/xml/src/main/resources/xml/validation/person.xsd
similarity index 100%
rename from xml/src/main/resources/xml/validation/person.xsd
rename to xml-modules/xml/src/main/resources/xml/validation/person.xsd
diff --git a/xml/src/test/java/com/baeldung/sax/SaxParserMainUnitTest.java b/xml-modules/xml/src/test/java/com/baeldung/sax/SaxParserMainUnitTest.java
similarity index 97%
rename from xml/src/test/java/com/baeldung/sax/SaxParserMainUnitTest.java
rename to xml-modules/xml/src/test/java/com/baeldung/sax/SaxParserMainUnitTest.java
index 333c5619c8f4..95b9d2730103 100644
--- a/xml/src/test/java/com/baeldung/sax/SaxParserMainUnitTest.java
+++ b/xml-modules/xml/src/test/java/com/baeldung/sax/SaxParserMainUnitTest.java
@@ -1,44 +1,44 @@
-package com.baeldung.sax;
-
-import org.junit.Test;
-import org.xml.sax.SAXException;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-import java.io.IOException;
-import java.util.List;
-
-import static org.junit.Assert.*;
-
-public class SaxParserMainUnitTest {
-
- @Test
- public void givenAProperXMLFile_whenItIsParsed_ThenAnObjectContainsAllItsElements() throws IOException, SAXException, ParserConfigurationException {
- SAXParserFactory factory = SAXParserFactory.newInstance();
- SAXParser saxParser = factory.newSAXParser();
-
- SaxParserMain.BaeldungHandler baeldungHandler = new SaxParserMain.BaeldungHandler();
- saxParser.parse("src/test/resources/sax/baeldung.xml", baeldungHandler);
-
- SaxParserMain.Baeldung result = baeldungHandler.getWebsite();
-
- assertNotNull(result);
- List articles = result.getArticleList();
-
- assertNotNull(articles);
- assertEquals(3, articles.size());
-
- SaxParserMain.BaeldungArticle articleOne = articles.get(0);
- assertEquals("Parsing an XML File Using SAX Parser", articleOne.getTitle());
- assertEquals("SAX Parser's Lorem ipsum...", articleOne.getContent());
-
- SaxParserMain.BaeldungArticle articleTwo = articles.get(1);
- assertEquals("Parsing an XML File Using DOM Parser", articleTwo.getTitle());
- assertEquals("DOM Parser's Lorem ipsum...", articleTwo.getContent());
-
- SaxParserMain.BaeldungArticle articleThree = articles.get(2);
- assertEquals("Parsing an XML File Using StAX Parser", articleThree.getTitle());
- assertEquals("StAX Parser's Lorem ipsum...", articleThree.getContent());
- }
-}
+package com.baeldung.sax;
+
+import org.junit.Test;
+import org.xml.sax.SAXException;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import java.io.IOException;
+import java.util.List;
+
+import static org.junit.Assert.*;
+
+public class SaxParserMainUnitTest {
+
+ @Test
+ public void givenAProperXMLFile_whenItIsParsed_ThenAnObjectContainsAllItsElements() throws IOException, SAXException, ParserConfigurationException {
+ SAXParserFactory factory = SAXParserFactory.newInstance();
+ SAXParser saxParser = factory.newSAXParser();
+
+ SaxParserMain.BaeldungHandler baeldungHandler = new SaxParserMain.BaeldungHandler();
+ saxParser.parse("src/test/resources/sax/baeldung.xml", baeldungHandler);
+
+ SaxParserMain.Baeldung result = baeldungHandler.getWebsite();
+
+ assertNotNull(result);
+ List articles = result.getArticleList();
+
+ assertNotNull(articles);
+ assertEquals(3, articles.size());
+
+ SaxParserMain.BaeldungArticle articleOne = articles.get(0);
+ assertEquals("Parsing an XML File Using SAX Parser", articleOne.getTitle());
+ assertEquals("SAX Parser's Lorem ipsum...", articleOne.getContent());
+
+ SaxParserMain.BaeldungArticle articleTwo = articles.get(1);
+ assertEquals("Parsing an XML File Using DOM Parser", articleTwo.getTitle());
+ assertEquals("DOM Parser's Lorem ipsum...", articleTwo.getContent());
+
+ SaxParserMain.BaeldungArticle articleThree = articles.get(2);
+ assertEquals("Parsing an XML File Using StAX Parser", articleThree.getTitle());
+ assertEquals("StAX Parser's Lorem ipsum...", articleThree.getContent());
+ }
+}
diff --git a/xml/src/test/java/com/baeldung/xml/DefaultParserUnitTest.java b/xml-modules/xml/src/test/java/com/baeldung/xml/DefaultParserUnitTest.java
old mode 100755
new mode 100644
similarity index 100%
rename from xml/src/test/java/com/baeldung/xml/DefaultParserUnitTest.java
rename to xml-modules/xml/src/test/java/com/baeldung/xml/DefaultParserUnitTest.java
diff --git a/xml/src/test/java/com/baeldung/xml/Dom4JParserUnitTest.java b/xml-modules/xml/src/test/java/com/baeldung/xml/Dom4JParserUnitTest.java
old mode 100755
new mode 100644
similarity index 100%
rename from xml/src/test/java/com/baeldung/xml/Dom4JParserUnitTest.java
rename to xml-modules/xml/src/test/java/com/baeldung/xml/Dom4JParserUnitTest.java
diff --git a/xml/src/test/java/com/baeldung/xml/JDomParserUnitTest.java b/xml-modules/xml/src/test/java/com/baeldung/xml/JDomParserUnitTest.java
old mode 100755
new mode 100644
similarity index 100%
rename from xml/src/test/java/com/baeldung/xml/JDomParserUnitTest.java
rename to xml-modules/xml/src/test/java/com/baeldung/xml/JDomParserUnitTest.java
diff --git a/xml/src/test/java/com/baeldung/xml/JaxbParserUnitTest.java b/xml-modules/xml/src/test/java/com/baeldung/xml/JaxbParserUnitTest.java
old mode 100755
new mode 100644
similarity index 100%
rename from xml/src/test/java/com/baeldung/xml/JaxbParserUnitTest.java
rename to xml-modules/xml/src/test/java/com/baeldung/xml/JaxbParserUnitTest.java
diff --git a/xml/src/test/java/com/baeldung/xml/JaxenDemoUnitTest.java b/xml-modules/xml/src/test/java/com/baeldung/xml/JaxenDemoUnitTest.java
old mode 100755
new mode 100644
similarity index 100%
rename from xml/src/test/java/com/baeldung/xml/JaxenDemoUnitTest.java
rename to xml-modules/xml/src/test/java/com/baeldung/xml/JaxenDemoUnitTest.java
diff --git a/xml/src/test/java/com/baeldung/xml/StaxParserUnitTest.java b/xml-modules/xml/src/test/java/com/baeldung/xml/StaxParserUnitTest.java
old mode 100755
new mode 100644
similarity index 100%
rename from xml/src/test/java/com/baeldung/xml/StaxParserUnitTest.java
rename to xml-modules/xml/src/test/java/com/baeldung/xml/StaxParserUnitTest.java
diff --git a/xml/src/test/java/com/baeldung/xml/XercesDomUnitTest.java b/xml-modules/xml/src/test/java/com/baeldung/xml/XercesDomUnitTest.java
similarity index 100%
rename from xml/src/test/java/com/baeldung/xml/XercesDomUnitTest.java
rename to xml-modules/xml/src/test/java/com/baeldung/xml/XercesDomUnitTest.java
diff --git a/xml/src/test/java/com/baeldung/xml/json2xml/JsonToXmlUnitTest.java b/xml-modules/xml/src/test/java/com/baeldung/xml/json2xml/JsonToXmlUnitTest.java
similarity index 100%
rename from xml/src/test/java/com/baeldung/xml/json2xml/JsonToXmlUnitTest.java
rename to xml-modules/xml/src/test/java/com/baeldung/xml/json2xml/JsonToXmlUnitTest.java
diff --git a/xml/src/test/java/com/baeldung/xml/stax/StaxParserUnitTest.java b/xml-modules/xml/src/test/java/com/baeldung/xml/stax/StaxParserUnitTest.java
similarity index 100%
rename from xml/src/test/java/com/baeldung/xml/stax/StaxParserUnitTest.java
rename to xml-modules/xml/src/test/java/com/baeldung/xml/stax/StaxParserUnitTest.java
diff --git a/xml/src/test/java/com/baeldung/xml/validation/XmlValidatorUnitTest.java b/xml-modules/xml/src/test/java/com/baeldung/xml/validation/XmlValidatorUnitTest.java
similarity index 100%
rename from xml/src/test/java/com/baeldung/xml/validation/XmlValidatorUnitTest.java
rename to xml-modules/xml/src/test/java/com/baeldung/xml/validation/XmlValidatorUnitTest.java
diff --git a/xml/src/test/java/com/baeldung/xml/xml2string/XMLObjectToStringUnitTest.java b/xml-modules/xml/src/test/java/com/baeldung/xml/xml2string/XMLObjectToStringUnitTest.java
similarity index 100%
rename from xml/src/test/java/com/baeldung/xml/xml2string/XMLObjectToStringUnitTest.java
rename to xml-modules/xml/src/test/java/com/baeldung/xml/xml2string/XMLObjectToStringUnitTest.java
diff --git a/xml/src/test/java/com/baeldung/xml/xml2string/XmlDocumentToStringUnitTest.java b/xml-modules/xml/src/test/java/com/baeldung/xml/xml2string/XmlDocumentToStringUnitTest.java
similarity index 100%
rename from xml/src/test/java/com/baeldung/xml/xml2string/XmlDocumentToStringUnitTest.java
rename to xml-modules/xml/src/test/java/com/baeldung/xml/xml2string/XmlDocumentToStringUnitTest.java
diff --git a/xml/src/test/resources/Xerces_dom.xml b/xml-modules/xml/src/test/resources/Xerces_dom.xml
similarity index 100%
rename from xml/src/test/resources/Xerces_dom.xml
rename to xml-modules/xml/src/test/resources/Xerces_dom.xml
diff --git a/xml/src/test/resources/example_default_parser.xml b/xml-modules/xml/src/test/resources/example_default_parser.xml
old mode 100755
new mode 100644
similarity index 100%
rename from xml/src/test/resources/example_default_parser.xml
rename to xml-modules/xml/src/test/resources/example_default_parser.xml
diff --git a/xml/src/test/resources/example_default_parser_namespace.xml b/xml-modules/xml/src/test/resources/example_default_parser_namespace.xml
similarity index 100%
rename from xml/src/test/resources/example_default_parser_namespace.xml
rename to xml-modules/xml/src/test/resources/example_default_parser_namespace.xml
diff --git a/xml/src/test/resources/example_dom4j.xml b/xml-modules/xml/src/test/resources/example_dom4j.xml
old mode 100755
new mode 100644
similarity index 100%
rename from xml/src/test/resources/example_dom4j.xml
rename to xml-modules/xml/src/test/resources/example_dom4j.xml
diff --git a/xml/src/test/resources/example_jaxb.xml b/xml-modules/xml/src/test/resources/example_jaxb.xml
old mode 100755
new mode 100644
similarity index 100%
rename from xml/src/test/resources/example_jaxb.xml
rename to xml-modules/xml/src/test/resources/example_jaxb.xml
diff --git a/xml/src/test/resources/example_jaxen.xml b/xml-modules/xml/src/test/resources/example_jaxen.xml
old mode 100755
new mode 100644
similarity index 100%
rename from xml/src/test/resources/example_jaxen.xml
rename to xml-modules/xml/src/test/resources/example_jaxen.xml
diff --git a/xml/src/test/resources/example_jdom.xml b/xml-modules/xml/src/test/resources/example_jdom.xml
old mode 100755
new mode 100644
similarity index 100%
rename from xml/src/test/resources/example_jdom.xml
rename to xml-modules/xml/src/test/resources/example_jdom.xml
diff --git a/xml/src/test/resources/example_stax.xml b/xml-modules/xml/src/test/resources/example_stax.xml
old mode 100755
new mode 100644
similarity index 100%
rename from xml/src/test/resources/example_stax.xml
rename to xml-modules/xml/src/test/resources/example_stax.xml
diff --git a/xml/src/test/resources/sax/baeldung.xml b/xml-modules/xml/src/test/resources/sax/baeldung.xml
similarity index 97%
rename from xml/src/test/resources/sax/baeldung.xml
rename to xml-modules/xml/src/test/resources/sax/baeldung.xml
index 6736d5bdca4d..9f642598cbe3 100644
--- a/xml/src/test/resources/sax/baeldung.xml
+++ b/xml-modules/xml/src/test/resources/sax/baeldung.xml
@@ -1,16 +1,16 @@
-
-
-
- Parsing an XML File Using SAX Parser
- SAX Parser's Lorem ipsum...
-
-
- Parsing an XML File Using DOM Parser
- DOM Parser's Lorem ipsum...
-
-
- Parsing an XML File Using StAX Parser
- StAX Parser's Lorem ipsum...
-
-
+
+
+
+ Parsing an XML File Using SAX Parser
+ SAX Parser's Lorem ipsum...
+
+
+ Parsing an XML File Using DOM Parser
+ DOM Parser's Lorem ipsum...
+
+
+ Parsing an XML File Using StAX Parser
+ StAX Parser's Lorem ipsum...
+
+
\ No newline at end of file
diff --git a/xml/src/test/resources/xml/websites.xml b/xml-modules/xml/src/test/resources/xml/websites.xml
similarity index 96%
rename from xml/src/test/resources/xml/websites.xml
rename to xml-modules/xml/src/test/resources/xml/websites.xml
index 579c13eb94a0..1c4703532dde 100644
--- a/xml/src/test/resources/xml/websites.xml
+++ b/xml-modules/xml/src/test/resources/xml/websites.xml
@@ -1,18 +1,18 @@
-
-
-
- Baeldung
- Online Courses
- Online
-
-
- Example
- Examples
- Offline
-
-
- Localhost
- Tests
- Offline
-
+
+
+
+ Baeldung
+ Online Courses
+ Online
+
+
+ Example
+ Examples
+ Offline
+
+
+ Localhost
+ Tests
+ Offline
+
\ No newline at end of file
diff --git a/xstream/pom.xml b/xml-modules/xstream/pom.xml
similarity index 82%
rename from xstream/pom.xml
rename to xml-modules/xstream/pom.xml
index 6f25e67e12d3..71031cde2a7a 100644
--- a/xstream/pom.xml
+++ b/xml-modules/xstream/pom.xml
@@ -1,7 +1,7 @@
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
org.baeldung
xstream
@@ -11,7 +11,7 @@
com.baeldung
- parent-modules
+ xml-modules
1.0.0-SNAPSHOT
diff --git a/xstream/src/main/java/com/baeldung/annotation/pojo/Customer.java b/xml-modules/xstream/src/main/java/com/baeldung/annotation/pojo/Customer.java
similarity index 100%
rename from xstream/src/main/java/com/baeldung/annotation/pojo/Customer.java
rename to xml-modules/xstream/src/main/java/com/baeldung/annotation/pojo/Customer.java
diff --git a/xstream/src/main/java/com/baeldung/annotation/pojo/CustomerOmitField.java b/xml-modules/xstream/src/main/java/com/baeldung/annotation/pojo/CustomerOmitField.java
similarity index 100%
rename from xstream/src/main/java/com/baeldung/annotation/pojo/CustomerOmitField.java
rename to xml-modules/xstream/src/main/java/com/baeldung/annotation/pojo/CustomerOmitField.java
diff --git a/xstream/src/main/java/com/baeldung/complex/pojo/ContactDetails.java b/xml-modules/xstream/src/main/java/com/baeldung/complex/pojo/ContactDetails.java
similarity index 100%
rename from xstream/src/main/java/com/baeldung/complex/pojo/ContactDetails.java
rename to xml-modules/xstream/src/main/java/com/baeldung/complex/pojo/ContactDetails.java
diff --git a/xstream/src/main/java/com/baeldung/complex/pojo/Customer.java b/xml-modules/xstream/src/main/java/com/baeldung/complex/pojo/Customer.java
similarity index 100%
rename from xstream/src/main/java/com/baeldung/complex/pojo/Customer.java
rename to xml-modules/xstream/src/main/java/com/baeldung/complex/pojo/Customer.java
diff --git a/xstream/src/main/java/com/baeldung/implicit/collection/pojo/ContactDetails.java b/xml-modules/xstream/src/main/java/com/baeldung/implicit/collection/pojo/ContactDetails.java
similarity index 100%
rename from xstream/src/main/java/com/baeldung/implicit/collection/pojo/ContactDetails.java
rename to xml-modules/xstream/src/main/java/com/baeldung/implicit/collection/pojo/ContactDetails.java
diff --git a/xstream/src/main/java/com/baeldung/implicit/collection/pojo/Customer.java b/xml-modules/xstream/src/main/java/com/baeldung/implicit/collection/pojo/Customer.java
similarity index 100%
rename from xstream/src/main/java/com/baeldung/implicit/collection/pojo/Customer.java
rename to xml-modules/xstream/src/main/java/com/baeldung/implicit/collection/pojo/Customer.java
diff --git a/xstream/src/main/java/com/baeldung/initializer/SimpleXstreamInitializer.java b/xml-modules/xstream/src/main/java/com/baeldung/initializer/SimpleXstreamInitializer.java
similarity index 100%
rename from xstream/src/main/java/com/baeldung/initializer/SimpleXstreamInitializer.java
rename to xml-modules/xstream/src/main/java/com/baeldung/initializer/SimpleXstreamInitializer.java
diff --git a/xstream/src/main/java/com/baeldung/pojo/AddressDetails.java b/xml-modules/xstream/src/main/java/com/baeldung/pojo/AddressDetails.java
similarity index 100%
rename from xstream/src/main/java/com/baeldung/pojo/AddressDetails.java
rename to xml-modules/xstream/src/main/java/com/baeldung/pojo/AddressDetails.java
diff --git a/xstream/src/main/java/com/baeldung/pojo/ContactDetails.java b/xml-modules/xstream/src/main/java/com/baeldung/pojo/ContactDetails.java
similarity index 100%
rename from xstream/src/main/java/com/baeldung/pojo/ContactDetails.java
rename to xml-modules/xstream/src/main/java/com/baeldung/pojo/ContactDetails.java
diff --git a/xstream/src/main/java/com/baeldung/pojo/Customer.java b/xml-modules/xstream/src/main/java/com/baeldung/pojo/Customer.java
similarity index 100%
rename from xstream/src/main/java/com/baeldung/pojo/Customer.java
rename to xml-modules/xstream/src/main/java/com/baeldung/pojo/Customer.java
diff --git a/xstream/src/main/java/com/baeldung/pojo/CustomerAddressDetails.java b/xml-modules/xstream/src/main/java/com/baeldung/pojo/CustomerAddressDetails.java
similarity index 100%
rename from xstream/src/main/java/com/baeldung/pojo/CustomerAddressDetails.java
rename to xml-modules/xstream/src/main/java/com/baeldung/pojo/CustomerAddressDetails.java
diff --git a/xstream/src/main/java/com/baeldung/pojo/CustomerPortfolio.java b/xml-modules/xstream/src/main/java/com/baeldung/pojo/CustomerPortfolio.java
similarity index 100%
rename from xstream/src/main/java/com/baeldung/pojo/CustomerPortfolio.java
rename to xml-modules/xstream/src/main/java/com/baeldung/pojo/CustomerPortfolio.java
diff --git a/xstream/src/main/java/com/baeldung/rce/App.java b/xml-modules/xstream/src/main/java/com/baeldung/rce/App.java
similarity index 100%
rename from xstream/src/main/java/com/baeldung/rce/App.java
rename to xml-modules/xstream/src/main/java/com/baeldung/rce/App.java
diff --git a/xstream/src/main/java/com/baeldung/rce/Person.java b/xml-modules/xstream/src/main/java/com/baeldung/rce/Person.java
similarity index 100%
rename from xstream/src/main/java/com/baeldung/rce/Person.java
rename to xml-modules/xstream/src/main/java/com/baeldung/rce/Person.java
diff --git a/xstream/src/main/java/com/baeldung/utility/MyDateConverter.java b/xml-modules/xstream/src/main/java/com/baeldung/utility/MyDateConverter.java
similarity index 100%
rename from xstream/src/main/java/com/baeldung/utility/MyDateConverter.java
rename to xml-modules/xstream/src/main/java/com/baeldung/utility/MyDateConverter.java
diff --git a/xstream/src/main/java/com/baeldung/utility/MySingleValueConverter.java b/xml-modules/xstream/src/main/java/com/baeldung/utility/MySingleValueConverter.java
similarity index 100%
rename from xstream/src/main/java/com/baeldung/utility/MySingleValueConverter.java
rename to xml-modules/xstream/src/main/java/com/baeldung/utility/MySingleValueConverter.java
diff --git a/xstream/src/main/java/com/baeldung/utility/SimpleDataGeneration.java b/xml-modules/xstream/src/main/java/com/baeldung/utility/SimpleDataGeneration.java
similarity index 100%
rename from xstream/src/main/java/com/baeldung/utility/SimpleDataGeneration.java
rename to xml-modules/xstream/src/main/java/com/baeldung/utility/SimpleDataGeneration.java
diff --git a/xstream/src/main/resources/logback.xml b/xml-modules/xstream/src/main/resources/logback.xml
similarity index 100%
rename from xstream/src/main/resources/logback.xml
rename to xml-modules/xstream/src/main/resources/logback.xml
diff --git a/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectAnnotationUnitTest.java b/xml-modules/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectAnnotationUnitTest.java
similarity index 100%
rename from xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectAnnotationUnitTest.java
rename to xml-modules/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectAnnotationUnitTest.java
diff --git a/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectCollectionUnitTest.java b/xml-modules/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectCollectionUnitTest.java
similarity index 100%
rename from xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectCollectionUnitTest.java
rename to xml-modules/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectCollectionUnitTest.java
diff --git a/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectAliasIntegrationTest.java b/xml-modules/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectAliasIntegrationTest.java
similarity index 100%
rename from xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectAliasIntegrationTest.java
rename to xml-modules/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectAliasIntegrationTest.java
diff --git a/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectAnnotationIntegrationTest.java b/xml-modules/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectAnnotationIntegrationTest.java
similarity index 100%
rename from xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectAnnotationIntegrationTest.java
rename to xml-modules/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectAnnotationIntegrationTest.java
diff --git a/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectFieldAliasIntegrationTest.java b/xml-modules/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectFieldAliasIntegrationTest.java
similarity index 100%
rename from xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectFieldAliasIntegrationTest.java
rename to xml-modules/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectFieldAliasIntegrationTest.java
diff --git a/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectIgnoreFieldsIntegrationTest.java b/xml-modules/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectIgnoreFieldsIntegrationTest.java
similarity index 100%
rename from xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectIgnoreFieldsIntegrationTest.java
rename to xml-modules/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectIgnoreFieldsIntegrationTest.java
diff --git a/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectIntegrationTest.java b/xml-modules/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectIntegrationTest.java
similarity index 100%
rename from xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectIntegrationTest.java
rename to xml-modules/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectIntegrationTest.java
diff --git a/xstream/src/test/java/com/baeldung/rce/AppUnitTest.java b/xml-modules/xstream/src/test/java/com/baeldung/rce/AppUnitTest.java
similarity index 100%
rename from xstream/src/test/java/com/baeldung/rce/AppUnitTest.java
rename to xml-modules/xstream/src/test/java/com/baeldung/rce/AppUnitTest.java
diff --git a/xstream/src/test/java/com/baeldung/rce/AttackExploitedException.java b/xml-modules/xstream/src/test/java/com/baeldung/rce/AttackExploitedException.java
similarity index 100%
rename from xstream/src/test/java/com/baeldung/rce/AttackExploitedException.java
rename to xml-modules/xstream/src/test/java/com/baeldung/rce/AttackExploitedException.java
diff --git a/xstream/src/test/java/com/baeldung/rce/AttackExploitedExceptionThrower.java b/xml-modules/xstream/src/test/java/com/baeldung/rce/AttackExploitedExceptionThrower.java
similarity index 100%
rename from xstream/src/test/java/com/baeldung/rce/AttackExploitedExceptionThrower.java
rename to xml-modules/xstream/src/test/java/com/baeldung/rce/AttackExploitedExceptionThrower.java
diff --git a/xstream/src/test/java/com/baeldung/rce/XStreamBasicsUnitTest.java b/xml-modules/xstream/src/test/java/com/baeldung/rce/XStreamBasicsUnitTest.java
similarity index 100%
rename from xstream/src/test/java/com/baeldung/rce/XStreamBasicsUnitTest.java
rename to xml-modules/xstream/src/test/java/com/baeldung/rce/XStreamBasicsUnitTest.java
diff --git a/xstream/src/test/java/com/baeldung/test/XStreamJettisonIntegrationTest.java b/xml-modules/xstream/src/test/java/com/baeldung/test/XStreamJettisonIntegrationTest.java
similarity index 100%
rename from xstream/src/test/java/com/baeldung/test/XStreamJettisonIntegrationTest.java
rename to xml-modules/xstream/src/test/java/com/baeldung/test/XStreamJettisonIntegrationTest.java
diff --git a/xstream/src/test/java/com/baeldung/test/XStreamJsonHierarchicalIntegrationTest.java b/xml-modules/xstream/src/test/java/com/baeldung/test/XStreamJsonHierarchicalIntegrationTest.java
similarity index 100%
rename from xstream/src/test/java/com/baeldung/test/XStreamJsonHierarchicalIntegrationTest.java
rename to xml-modules/xstream/src/test/java/com/baeldung/test/XStreamJsonHierarchicalIntegrationTest.java
diff --git a/xstream/src/test/java/com/baeldung/utility/XStreamSimpleXmlIntegrationTest.java b/xml-modules/xstream/src/test/java/com/baeldung/utility/XStreamSimpleXmlIntegrationTest.java
similarity index 100%
rename from xstream/src/test/java/com/baeldung/utility/XStreamSimpleXmlIntegrationTest.java
rename to xml-modules/xstream/src/test/java/com/baeldung/utility/XStreamSimpleXmlIntegrationTest.java
diff --git a/xstream/src/test/resources/attack.xml b/xml-modules/xstream/src/test/resources/attack.xml
similarity index 100%
rename from xstream/src/test/resources/attack.xml
rename to xml-modules/xstream/src/test/resources/attack.xml
diff --git a/xstream/src/test/resources/calculator-attack.xml b/xml-modules/xstream/src/test/resources/calculator-attack.xml
similarity index 100%
rename from xstream/src/test/resources/calculator-attack.xml
rename to xml-modules/xstream/src/test/resources/calculator-attack.xml
diff --git a/xstream/src/test/resources/data-file-alias-field-complex.xml b/xml-modules/xstream/src/test/resources/data-file-alias-field-complex.xml
similarity index 100%
rename from xstream/src/test/resources/data-file-alias-field-complex.xml
rename to xml-modules/xstream/src/test/resources/data-file-alias-field-complex.xml
diff --git a/xstream/src/test/resources/data-file-alias-field.xml b/xml-modules/xstream/src/test/resources/data-file-alias-field.xml
similarity index 100%
rename from xstream/src/test/resources/data-file-alias-field.xml
rename to xml-modules/xstream/src/test/resources/data-file-alias-field.xml
diff --git a/xstream/src/test/resources/data-file-alias-implicit-collection.xml b/xml-modules/xstream/src/test/resources/data-file-alias-implicit-collection.xml
similarity index 100%
rename from xstream/src/test/resources/data-file-alias-implicit-collection.xml
rename to xml-modules/xstream/src/test/resources/data-file-alias-implicit-collection.xml
diff --git a/xstream/src/test/resources/data-file-alias.xml b/xml-modules/xstream/src/test/resources/data-file-alias.xml
similarity index 100%
rename from xstream/src/test/resources/data-file-alias.xml
rename to xml-modules/xstream/src/test/resources/data-file-alias.xml
diff --git a/xstream/src/test/resources/data-file-ignore-field.xml b/xml-modules/xstream/src/test/resources/data-file-ignore-field.xml
similarity index 100%
rename from xstream/src/test/resources/data-file-ignore-field.xml
rename to xml-modules/xstream/src/test/resources/data-file-ignore-field.xml
diff --git a/xstream/src/test/resources/data-file.xml b/xml-modules/xstream/src/test/resources/data-file.xml
similarity index 100%
rename from xstream/src/test/resources/data-file.xml
rename to xml-modules/xstream/src/test/resources/data-file.xml