This is a guide to working with XML in Java.
We'll go over the most common Java XML processing libraries – for both parsing and binding.
2. DOM Parsers
Simply put, a DOM parser works on the entire XML document, loads it into memory and constructs a tree representation of the document.
2.1. Useful Resources
- Working with XML Files in Java Using DOM Parsing
- Write an org.w3.dom.Document to a File
- Pretty-Print XML in Java
- Intro to XPath with Java
- Modifying an XML Attribute in Java using dom4j
3. SAX Parser
A SAX parser is an event-based parser – it parses the XML document using callbacks without loading the whole document into memory.
3.1. Useful Resources
4. StAX Parser
A StAX Parser is median between DOM and SAX parser.
4.1. Useful Resources
JAXB – Java Architecture for XML Binding – is used to convert objects from/to XML.
JAXB is a part of the Java SE platform and one of the APIs in Jakarta EE.
5.1. Useful Resources
XStream is a simple library to serialize objects to/from XML.
6.1. Useful Resources
- XStream User Guide: Converting XML to Objects
- XStream User Guide: Converting Objects to XML
- Remote Code Execution with XStream
7. Jackson XML
Jackson XML is an extension of the Jackson JSON processor for reading and writing XML encoded data.
7.1. Useful Resources
- Official Website
- Jackson XML databind Wiki
- Jackson XML annotations
- XML Serialization and Deserialization with Jackson
- Convert XML to JSON Using Jackson
8. Apache CXF Aegis
Aegis is a data binding or a subsystem that can map between Java objects and XML documents described by XML schemas.
8.1. Useful Resources
JiBX is a tool for binding XML data to Java objects. It provides solid performance compared to other common tools such as JAXB.
9.1. Useful Resources
10. XMLUnit 2
XMLUnit 2.x is a powerful library that helps us test and verify XML content, and comes in particularly handy when we know exactly what that XML should contain.
10.1. Useful Resources
This was a quick intro to the XML ecosystem in Java.
Use this as a guide to learn more about doing XML work and getting a high-level view of the Java XML landscape.
We also have a collection of articles on this topic, if you wish to see links to all our XML content in one place.