Jackson is typically used for Json serialization and deserialization, but with the jackson-dataformat-xml dependency you can also use Jackson to easily map to/from XML too.
Maven dependencies:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.12.4</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>2.12.4</version> </dependency>
If you have additional elements and attributes on elements that you’re not interested in, similar to Json, just add the ignore annotation at class level:
@JsonIgnoreProperties(ignoreUnknown = true)
In some XML docs you can have elements with the same name at the same level without a parent to exclusively group those elements. For example you can have xml that looks like this with a grouping:
<example> <name>example1</name> <items> <item>1</item> <item>2</item> </items> </example>
This would be automatically handled by Jackson if your POJO class has a list of Item called items:
private List<Item> items;
but sometimes you’ll have a doc that looks like this:
<example> <name>example1</name> <item>1</item> <item>2</item> </example>
To map this you need to use this annotation:
@JacksonXmlElementWrapper(useWrapping = false) private List<Item> item;