What is CWXML?
CWXML is an high-performance, open-source C-language library for parsing and generating XML and BXML (below) formats with a straightforward API. Initial testing indicates that CWXML is 3 or more times faster at parsing XML (text data) than other popular libraries such as expat and libxml2 (10x Xerces) and 5 to 60 times faster again at parsing BXML data. The library is being developed by CubeWerx as the reference implementation for the BXML proposed specification. The parser accepts and automatically recognizes the following formats: XML, GZIPped XML, BXML, BXML with internal GZIP, and BXML with external GZIP. It is licensed under the GNU LGPL.
What is BXML?
BXML (Binary eXtensible Markup Language) is a straightforward, open, patent-unencumbered binary-encoding format for XML data that is a stand-alone work-alike drop-in replacement for an XML file that mirrors the XML markup structures in a way that is similar to the in-memory representations of many parser libraries. BXML was developed by CubeWerx Inc. for the OpenGIS® Consortium and it makes all XML documents more compact and efficient to parse and generate by using a symbol table for element/attribute names and length-prefix encoding all arbitrary-length structures (strings, blobs, arrays). But it especially makes dense-numeric XML documents much more efficient by allowing raw arrays of different common types of numbers. For example, imagery data can be handled in BXML just as well if not better than it is handled in PNG format. A numeric array can pass from end-to-end in a client/server environment as a raw chunk of data without ever being recoded. Dense numeric data also compresses faster and more compactly when encoded in binary rather than text. BXML can also support random access.