DOM4J is an open source, Java-based library to parse XML documents. It is a highly flexible and memory-efficient API. It is Java-optimized and uses Java collections like List and Arrays.
DOM4J works with DOM, SAX, XPath, and XSLT. It can parse large XML documents with very low memory footprint.
In order to use DOM4J parser, you should have dom4j-1.6.1.jar and jaxen.jar in your application's classpath. Download dom4j-1.6.1.zip.
You should use a DOM4J parser when −
You need to know a lot about the structure of an XML document.
You need to move parts of an XML document around (you might want to sort certain elements, for example).
You need to use the information in an XML document more than once.
You are a Java developer and want to leverage Java-optimized parsing of XML.
When you parse an XML document with a DOM4J parser, you get the flexibility to get back a tree structure that contains all of the elements of your document without impacting the memory footprint of the application.
DOM4J provides a variety of utility functions that you can use to examine the contents and structure of an XML document in case the document is well structured and its structure is known.
DOM4J uses XPath expression to navigate through an XML document.
DOM4J provides Java developers the flexibility and easy maintainablity of XML parsing code. It is a lightweight and quick API.
DOM4J defines several Java classes. Here are the most common classes −
Document − Represents the entire XML document. A Document object is often referred to as a DOM tree.
Element − Represents an XML element. Element object has methods to manipulate its child elements, text, attributes, and namespaces.
Attribute − Represents an attribute of an element. Attribute has method to get and set the value of attribute. It has parent and attribute type.
Node − Represents Element, Attribute, or ProcessingInstruction.
When you are working with the DOM4J, there are several methods you'll use often −
SAXReader.read(xmlSource)() − Build the DOM4J document from an XML source.
Document.getRootElement() − Get the root element of an XML document.
Element.node(index) − Get the XML node at a particular index in an element.
Element.attributes() − Get all the attributes of an element.
Node.valueOf(@Name) − Get the values of an attribute with the given name of an element.