C++/Hybrid: In-Memory XML Data Binding
C++/Hybrid is a light-weight, in-memory W3C XML Schema to C++ mapping for mobile and embedded systems. Provided with a schema, it generates C++ classes corresponding to XML Schema types as well as parsing and serialization code. The generated C++ classes represent the data stored in XML as a statically-typed, tree-like object model. C++/Hybrid supports fully in-memory as well as hybrid, partially event-driven, partially in-memory XML processing. The latter approach combines the ease and convenience of the in-memory processing model with the ability to minimize the use of RAM and handle documents that would otherwise not fit into memory. For an introduction to the C++/Hybrid mapping refer to the Hello World Example from the C++/Hybrid Mapping Getting Started Guide.
Features
- Light-weight object model as well as parsing and serialization code.
- Support for fully in-memory and hybrid, partially in-memory, partially event-driven XML processing.
- Support for filtering of XML data during parsing and object model during serialization.
- Customizable object model classes as well as parsing and serialization code.
- Precise reproduction of XML vocabulary structure and element order in the object model.
- Mapping of XML Schema enumerations to C++ enums.
- High-performance XML Schema validation in the generated code (configurable, can be used during parsing and/or serialization).
- No dynamic memory allocations during validation (non-recursive parsing).
- Small memory footprint, including heap and stack usage.
- Highly-portable, can be used without STL, RTTI, iostream, C++ exceptions, and with minimal use of C++ templates.
- Extensible, high-performance serialization to compact binary formats for storage or over-the-wire transfer (includes built-in support for XDR and ACE CDR, custom formats can be easily added).
- Support for parsing and serialization of XML documents with varying root elements.
- Support for XML Schema polymorphism (
xsi:type
and substitution groups). - Support for type-less content: mixed content model,
xsd:anyType/xsd:anySimpleType
, andxsd:any/xsd:anyAttribute
. - Support for default and fixed values.
- Customizable XML Schema namespace to C++ namespace mapping.
- Support for schema importing, inclusion and chameleon-style inclusion.
- Automatic morphing of anonymous types into named ones.
- Support for the file-per-schema and file-per-type compilation models.
- Built-in support for UTF-8, UTF-16, ISO-8859-1, and US-ASCII encoded XML documents.
- Configurable application character encoding (UTF-8 or ISO-8859-1).
- Support for custom memory allocators.
- Support for schema evolution.
Documentation
Getting Started Guide | An introduction to the C++/Hybrid mapping with examples. Also available in PDF and PostScript. |
---|---|
XSD/e Compiler Manual | The XSD/e compiler command line interface documentation. |
XSD/e Wiki Pages | XSD/e community resources, such as FAQs, HOWTOs, etc. |
Support
We provide free, best-effort technical support for XSD/e via the xsde-users mailing list. Simply send an email to this mailing list with the description of a bug or a problem that you encountered. Please follow the Posting Guidelines to receive a prompt reply.
We also offer priority support on a commercial basis. Visit our support page for more information.
Resources
XSD/e project page | Source code, build instructions and other information for XSD/e compiler developers. |
---|---|
XML Schema Part 0: Primer | An easily approachable description of the XML Schema facilities. It is oriented towards quickly understanding how to create schemas using the W3C XML Schema language. |