summaryrefslogtreecommitdiff
path: root/src/utils/xml.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils/xml.h')
-rw-r--r--src/utils/xml.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/utils/xml.h b/src/utils/xml.h
index ef3bad3d..5473b2ca 100644
--- a/src/utils/xml.h
+++ b/src/utils/xml.h
@@ -34,6 +34,43 @@
namespace XML
{
/**
+ * A helper class for parsing an XML document, which also cleans it up
+ * again (RAII).
+ */
+ class Document
+ {
+ public:
+ /**
+ * Constructor that attempts to load the given file through the
+ * resource manager. Logs errors.
+ */
+ Document(const std::string &filename);
+
+ /**
+ * Constructor that attempts to load an XML document from memory.
+ * Does not log errors.
+ *
+ * @param data the string to parse as XML
+ * @param size the length of the string in bytes
+ */
+ Document(const char *data, int size);
+
+ /**
+ * Destructor. Frees the loaded XML file.
+ */
+ ~Document();
+
+ /**
+ * Returns the root node of the document (or NULL if there was a
+ * load error).
+ */
+ xmlNodePtr rootNode();
+
+ private:
+ xmlDocPtr mDoc;
+ };
+
+ /**
* Gets an integer property from an xmlNodePtr.
*/
int