Provided by: libcoin80-doc_3.1.4~abc9f50-4ubuntu2_all bug

NAME

       xmlparsing - XML Parsing with Coin For Coin 3.0, we added an XML parser to Coin. This
       document describes how it can be used for generic purposes.

       Why another XML parser, you might ask? First of all, the XML parser is actually a third-
       party parser, expat. Coin needed one, and many Coin-dependent projects needed one as well.
       We therefore needed to expose an API for it. However, integrating a 3rd-party parser into
       Coin, we can not expose its API directly, or other projects also using Expat would get
       conflicts. We therefore needed to expose the XML API with a unique API, hence the API you
       see here. It is based on a XML DOM API we use(d) in a couple of other projects, but it has
       been tweaked to fit into Coin and to be wrapped over Expat (the original implementation
       just used flex).

       The XML parser is both a streaming parser and a DOM parser. Being a streaming parser means
       that documents can be read in without having to be fully contained in memory. When used as
       a DOM parser, the whole document is fully parsed in first, and then inspected by client
       code by traversing the DOM. The two modes can actually be mixed arbitrarily if ending up
       with a partial DOM sounds useful.

       The XML parser has both a C API and a C++ API. The C++ API is just a wrapper around the C
       API, and only serves as convenience if you prefer to read/write C++ code (which is
       tighter) over more verbose C code.

       The C API naming convention may look a bit strange, unless you have written libraries to
       be wrapped for scheme/lisp-like languages before. Then you might be familiar with the
       convention of suffixing your functions based on their behaviour/usage meaning. Mutating
       functions are suffixed with '!', or '_x' for (eXclamation point), and predicates are
       suffixed with '?', or '_p' in C.

       The simplest way to use the XML parser is to just call cc_xml_read_file(filename) and then
       traverse the DOM model through using cc_xml_doc_get_root(), cc_xml_elt_get_child(), and
       cc_xml_elt_get_attr().

       See Also:
           XML related functions and objects, cc_xml_doc, cc_xml_elt, cc_xml_attr