-
-
Notifications
You must be signed in to change notification settings - Fork 222
Home
This is the home page for "jackson-xml-databind" project. The main deliverable of the project is a jar that contains extension to Jackson JSON library, to extend it so that it can bind XML to POJOs (and vice versa), instead of using JSON.
Intended usage is by instantiating 'com.fasterxml.jackson.xml.XmlMapper', and using it just like standard Jackson 'ObjectMapper' -- the difference being that instead of JSON, external data format is XML. That is:
import com.fasterxml.jackson.xml.XmlMapper;
// with Jackson 2.10 and later
ObjectMapper mapper = XmlMapper.builder()
// possible configuration changes
.build();
// or, with Jackson versions before 2.10 (also exists for later versions)
ObjectMapper mapper = new XmlMapper();
For most usage that is all there is!
One alternative is that if you need to change some configuration, you may need to first configure module, then construct mapper:
JacksonXmlModule module = new JacksonXmlModule();
// to default to using "unwrapped" Lists:
module.setDefaultUseWrapper(false);
XmlMapper xmlMapper = XmlMapper.builder(module)
.build();
Note that underlying JsonParser
and JsonGenerator
instances are specific subtypes as well (FromXmlParser
, ToXmlGenerator
), but usually you don't have to worry about this.
Although basic pretty-printing using like this works fine with XML:
String doc = mapper.writerWithDefaultPrettyPrinter().writeValue(value);
you may want to use specifically configured pretty-printer. XML module requires specific PrettyPrinter
subtype (XmlPrettyPrinter
); used of standard JSON-based DefaultPrettyPrinter
does not work.
So when writing XML, you need to pretty print the XML using the DefaultXmlPrettyPrinter.
DefaultXmlPrettyPrinter xmlPrettyPrinter = new DefaultXmlPrettyPrinter();
// you can then configure the settings on the xmlPrettyPrinter instance
xmlMapper.setDefaultPrettyPrinter(xmlPrettyPrinter);
Project is licensed under Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt) like all official Jackson components.
FasterXML also explicitly allows users to alternatively license component under Lesser GPL (LGPL) 2.1 up to and including version 2.2. If so, they may want to repackage artifacts to reflect their choice of license to use.
See javadoc.io docs and select the appropriate API version in top banner.
Snapshot builds can be found from Sonatype Maven Snapshot repository:
<snapshotRepository>
<id>sonatype-nexus-snapshots</id>
<name>Sonatype Nexus Snapshots</name>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>