summaryrefslogtreecommitdiff
path: root/extensions/libxmlwrapper.h
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/libxmlwrapper.h')
-rw-r--r--extensions/libxmlwrapper.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/extensions/libxmlwrapper.h b/extensions/libxmlwrapper.h
new file mode 100644
index 0000000..3971bb9
--- /dev/null
+++ b/extensions/libxmlwrapper.h
@@ -0,0 +1,46 @@
+#ifndef __LIBXMLWRAPPER_H
+#define __LIBXMLWRAPPER_H
+
+#include <string>
+#include <vector>
+#include <map>
+#include <set>
+#include <utility>
+#include <stack>
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+#include <libxml/xmlerror.h>
+#include <vdr/plugin.h>
+
+using namespace std;
+typedef pair<string,string> stringpair;
+typedef map<string,string> stringmap;
+
+class cLibXMLWrapper {
+private:
+ xmlParserCtxtPtr ctxt;
+ xmlDocPtr doc;
+ xmlNodePtr root;
+ xmlNodePtr current;
+ stack<xmlNodePtr> nodeStack;
+protected:
+ void DeleteDocument(void);
+ bool ReadXMLFile(const char *path, bool validate = true);
+ bool SetDocument(void);
+ bool Validate(void);
+ bool CheckNodeName(const char *name);
+ const char *NodeName(void);
+ vector<stringpair> ParseAttributes(void);
+ bool LevelDown(void);
+ bool LevelUp(void);
+ bool NextNode(void);
+ bool GetAttribute(string &name, string &value);
+ bool GetNodeValue(string &value);
+public:
+ cLibXMLWrapper(void);
+ virtual ~cLibXMLWrapper(void);
+ static void InitLibXML();
+ static void CleanupLibXML();
+};
+
+#endif //__LIBXMLWRAPPER_H \ No newline at end of file