Open Source XML Parsers in Java
|The Xerces Java Parser 1.4.4 supports the XML 1.0 recommendation and contains advanced parser functionality, such as support for the W3C's XML Schema recommendation version 1.0, DOM Level 2 version 1.0, and SAX Version 2, in addition to supporting the industry-standard DOM Level 1 and SAX version 1 APIs.
Go To Xerces
|Piccolo is a small, extremely fast XML parser for Java. It implements the SAX 1, SAX 2.0.1, and JAXP 1.1 (SAX parsing only) interfaces as a non-validating parser and attempts to detect all XML well-formedness errors.
Go To Piccolo XML Parser
|XP is an XML 1.0 parser written in Java. It is fully conforming: it detects all non well-formed documents. It is currently not a validating XML processor. However it can parse all external entities: external DTD subsets, external parameter entities and external general entities.
Go To XP Parser
|JDOM is, quite simply, a Java representation of an XML document. JDOM provides a way to represent that document for easy and efficient reading, manipulation, and writing. It has a straightforward API, is a lightweight and fast, and is optimized for the Java programmer. It's an alternative to DOM and SAX, although it integrates well with both DOM and SAX.
Go To JDOM
|kXML 2 is a small XML pull parser, specially designed for constrained environments such as Applets, Personal Java or MIDP devices.
Go To kXML
|NanoXML is a small XML parser for Java. NanoXML comes in three different components:
* NanoXML/Java - The standard parser for Java.
* NanoXML/SAX - A SAX adapter for NanoXML/Java.
* NanoXML/Lite - An extremely small (6KB) XML parser which is the successor of NanoXML 1. It only provides a limited functionality: no mixed content and the DTD is ignored.
Go To NanoXML
|NekoPull is an XML document parsing API that extends the Xerces Native Interface (XNI) to provide pull parsing functionality. The pull parsing paradigm is different from tree-based APIs like the Document Object Model (DOM) and event stream APIs like the Simple API for XML (SAX) in that the application controls the parsing of documents. NekoPull is similar to lex in that the application requests, or pulls, the document information one piece at a time instead of having document information pushed to the application.
Go To NekoPull
|XOM is a new XML object model. It is an open source (LGPL), tree-based API for processing XML with Java that strives for correctness and simplicity.
Go To XOM
|XStream is a simple library to serialize objects to XML and back again.
Go To XStream
|JiBX is a framework for binding XML data to Java objects. It lets you work with data from XML documents using your own class structures. The JiBX framework handles all the details of converting your data to and from XML based on your instructions. JiBX is designed to perform the translation between internal data structures and XML with very high efficiency, but still allows you a high degree of control over the translation process.
Go To JiBX: Binding XML to Java Code
|dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework and with full support for DOM, SAX and JAXP
Go To dom4j
|At a high level XMLBeans is an XML-Java binding tool that uses XML Schema as a basis for generating Java classes that you can use to easily access XML instance data in a natural manner in your Java programs. It was designed to provide both easy access to XML information via convenient Java classes as well as complete access to the underlying XML, combining the best of low-level APIs like SAX and DOM that provide full access with the convenience of Java binding.
There are several factors that set XMLBeans apart from any other XML-Java binding alternatives:
* XML Schema Compliance - XMLBeans has achieved extremely high schema compliance and is able to compile even the most complex schemas. This is critical when adopting an XML-Java binding framework since you may received schemas that are out of your control.
* Access to the full underlying XML Infoset - The XML Cursor API allows you to access a lower level DOM like access to the underying XML Infoset. You can get a \"cursor\" at any point while using the strongly typed generated XMLBeans and begin navigating the underlying XML instance.
* Access to the schema type system - The XMLBeans schema API allows you to walk through the schema type system giving you full access to a Java object representation of the XML Schema that was compiled to generate the XMLBeans classes.
* Speed - XMLBeans is optimized for performance at many levels. For example, XMLBeans lazily constructs objects from XML, so that you do not have the performance overhead of object creation when you only access portions of an XML document. Several Fortune 500 customers have adopted XMLBeans based on speed alone.
Go To XMLBeans
|Woodstox is a fast Open Source StAX-compliant XML-processor written in Java (processor meaning it handles both input (== parsing) and output (== writing, serialization)).
Go To woodstox
|StAX is a standard XML processing API that allows you to stream XML data from and to your application. It's a standard pull parser implementation for the java platform.
Go To StAX
|VTD-XML is the next generation XML parser that goes beyond DOM and SAX in terms of performance, memory and ease of use.
To XML developers, VTD-XML is simple and just works!
Other innovative features include XML indexing (due to inherent persistence of VTD) and incremental update.
It is also the world's fastest XML processor: On an Athlon64 3400+ PC, VTD-XML significantly (1.5x~2x) outperforms SAX parsers with NULL content handler, delivering 50~60 MB/sec sustained throughput, without sacrificing random access. Its memory usage is typically between 1.3x~1.5x the size of the XML document, with 1 being the XML itself.
Go To VTD-XML 1.5
|Many Jakarta projects read XML configuration files to provide initialization of various Java objects within the system. There are several ways of doing this, and the Digester component was designed to provide a common implementation that can be used in many different projects.
Basically, the Digester package lets you configure an XML -> Java object mapping module, which triggers certain actions called rules whenever a particular pattern of nested XML elements is recognized. A rich set of predefined rules is available for your use, or you can also create your own. Advanced features of Digester include:
* Ability to plug in your own pattern matching engine, if the standard one is not sufficient for your requirements.
* Optional namespace-aware processing, so that you can define rules that are relevant only to a particular XML namespace.
* Encapsulation of Rules into RuleSets that can be easily and conveniently reused in more than one application that requires the same type of processing.
Go To Jakarta Commons Digester
|JOX is a set of Java libraries that make it easy to transfer data between XML documents and Java beans. You can think of JOX as a special form of Java Object Serialization, using XML as the serialization format
Go To JOX
|Zeus is, in a nutshell, an open source Java-to-XML Data Binding tool. It provides a means of taking an arbitrary XML document and converting that document into a Java object representing the XML. That Java object can then be used and manipulated like any other Java object in the VM (virtual machine). Then, once the object has been modified and operated upon, Zeus can be used to convert the Java object back into an XML representation.
Go To Zeus
|The Koala KBML package enables to serialize/deserialize JavaBeansTM to/from XML documents. KBML stands for Koala Bean Markup Language. KBML is 100% Java.
Go To KBML
|Skaringa is an API for Java and XML language binding. It transforms Java objects into XML documents and back, and can generate XML schema definitions for a Java class. Typical applications are data exchange, object persistence, object transformation, and driving XML based presentation layers. Skaringa is designed for speed and simplicity, supporting a wide range of types. Skaringa works with all Plain Old Java Objects (POJOs), it is not limited to special cases, like JavaBeans.
Go To Skaringa
|XML 2 Java Binding (X2JB) is a Java development tool intended for binding of XML entities to Java interfaces and classes (but not vice versa).
In theory it is kind of like JAXB, XML Beans or Jakarta Commons Digester but without their complexity. It uses annotations to map attributes and elements into a Java class.
Go To X2JB
|The Betwixt library allows one to serialize objects to XML and back again - providing an XML introspection mechanism for mapping beans to XML in a flexible way.
Betwixt is strong is when you've already got the beans and just want a nice looking XML format to serialize/deserialize your beans. Indeed with Betwixt you can just write your beans and not even worry about XML schemas and providing you follow a simple bean naming convention (the use of getter, setter and adder methods) you'll get nice looking XML for free
Go To Apache Betwixt
|The Java Architecture for XML Binding (JAXB) provides a fast and convenient way to bind between XML schemas and Java representations, making it easy for Java developers to incorporate XML data and processing functions in Java applications
Go To JAXB
|Lycia is an opensource event-base approach of parsing structured data (primarily XML).
By using a fluent language to describe the parser and annotation-driven design to define event-listeners Lycia is capable of parsing and validating data.
Lycia is compatible with Sun/Oracle, IBM, JRockit, OpenJDK and Android 1.6 - 2.1 and new features of Android 2.2
Go To Lycia
|Staxmate is a lightweight wrapper around Stax (JSR-173) XML processors such as Woodstox, intended to making their use simpler and easier.
Go To Staxmate