We think that an XML framework for Java should be simple, easy to use and intuitive for a Java programmer. We want to take the best features from DOM and SAX and put them together into a new unified API which is optimised the for the Java platform.
We want to fully support DOM and SAX together with existing Java platform standards such as the Java 2 Collections and J2EE.
We want complete XPath support integrated into the API and for it to be very easy to use. XPath is the ideal technology for navigating around XML documents simply and easily without writing lines and lines of code.
We want to be able to support very flexible, performant and memory efficient implementations of XML documents. So we want the API to be based on Java interfaces just like the Java 2 Collections framework.
Just as no single List implementation will suffice (the JDK comes with at least 3) we believe we need a framework allowing plug and play XML document implementations. For some users, using a LinkedList performs better than an ArrayList because their usage characteristics differ. Others like to use a Vector as it is synchronized. We believe an XML model should have the same flexibility.
One of the primary goals of dom4j is to be a flexible XML framework for Java which supports most users needs whether that be fast and efficient parsing with small memory overhead, processing very large documents or using the latest XML features such as XPath, XSLT and XML Query.
We found that we often needed to move from DOM to SAX to handle very large documents or to move from SAX to DOM to handle complex documents. Our aim is for dom4j to be the only framework you really need on the Java platform and for it to be a good citizen supporting and integrating with existing standards fully.