// Copyright (c) 2002 David Muse
// See the COPYING file for more information.

#ifndef RUDIMENTS_XMLDOM_H
#define RUDIMENTS_XMLDOM_H

#include <rudiments/private/xmldomincludes.h>

// The xmldom class implements a minimal XML DOM parser.

#ifdef RUDIMENTS_NAMESPACE
namespace rudiments {
#endif

class xmldomprivate;

class xmldom : public xmlsax {
        public:

                        xmldom();
                virtual       ~xmldom();

                bool  parseFile(const char *filename);
                        // Parse file "filename" and generate a DOM tree.
                bool  parseString(const char *string);
                        // Parse string "string" and generate a DOM tree.

                xmldomnode      *getRootNode() const;
                                // Returns the root node of the DOM tree.

                void  createRootNode();
                        // Creates a new root node.  Useful for building a
                        // tree from scratch.

                bool  writeFile(const char *filename, mode_t perms) const;
                        // Writes the current DOM tree to "filename" and sets
                        // permissions of the file to "perms".

        #include <rudiments/private/xmldom.h>
};

#ifdef RUDIMENTS_NAMESPACE
}
#endif

#endif