What is Arabica

There are two primary XML parser APIs, SAX and DOM. DOM provides a tree model of the entire document, while SAX is an event driven API where the parser calls functions in your code as parts of the XML document are identified. SAX was originally developed by members of the XML-DEV mailing list as a Java API during the early part of 1998, but there are implementations in many other languages.

Arabica does not yet implement an XML parser of its own. Instead, it provides uniform SAX and DOM bindings for a number of common XML parsers, allowing you to choose the one best suited to your needs. It can provide its output as UTF-8 encoded std::strings, or UCS-2 encoded std::wstrings. If neither of those suits for whatever reason, you can easily drop in your own choice of string class or encoding or both as the entire library is templated on string type and string creation policy. It also provides resolvers for file and http URIs, and the resolver is programmically extendible to allow custom URI schemes or catalogues (such as interfaces to databases) to be added in a straightforward manner.

The Arabica library is free software, provided under a BSD style license. It is an open source project, which means that the source code for the whole library, instructions on how to build and use it, and documentation, are all provided. You are allowed to use the Arabica library for any purpose, and you can include it in your commercial, shareware or freeware products and projects. The library is provided in source form and is known to work on various Windows platforms, and Linux. Ports to other platforms should be easy, as I've made a conscious attempt to write the code portably - with a reasonably standards compliant compiler and library combination you should encounter few problems. If you make a port to a new platform, please email jez@jezuk.co.uk to allow your port to be included in a future distribution. If you run into portability problems then I'm also happy to help. If you choose to include Arabica in your product, I'd appreciate an email and any comments you might have, but that's a request not an obligation.

The Arabica library is provided as is, with no expressed or implied guarantee of usefulness, operation or correctness. I released this software because I found it useful, so I'm very interested in hearing about how you get on with it and what problems you ran into. I'll reply to every email request or question I receive as best I can. Commercial support or custom development can be negotiated if required.

SourceForge Project Page

Jez Higgins