Umasoft
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
easyxml.hpp
Go to the documentation of this file.
1 
8 #ifndef __EASYXML_HPP
9 #define __EASYXML_HPP
10 
11 #ifdef _MSC_VER
12  #pragma warning(disable: 4100) // Avoid picky compiler warning about unused params
13 #endif
14 
15 #include "exception.hpp"
16 
17 #include <iostream>
18 #include <string>
19 #include <vector>
20 #include "zlib.h"
21 
22 using namespace std;
23 
35 {
36 public:
38  XMLAttributes ();
39 
41  virtual ~ XMLAttributes ();
42 
48  virtual int size () const = 0;
49 
59  virtual const char * getName (int i) const = 0;
60 
70  virtual const char * getValue (int i) const = 0;
71 
83  virtual int findAttribute (const char * name) const;
84 
92  virtual bool hasAttribute (const char * name) const;
93 
104  virtual const char * getValue (const char * name) const;
105 };
106 
107 
120 {
121 public:
124 
133  XMLAttributesDefault (const XMLAttributes & atts);
134 
135 
139  virtual ~XMLAttributesDefault ();
140 
141 
145  virtual int size () const;
146 
147 
151  virtual const char * getName (int i) const;
152 
153 
157  virtual const char * getValue (int i) const;
158 
159 
168  virtual void addAttribute (const char * name, const char * value);
169 
170 
180  virtual void setName (int i, const char * name);
181 
182 
192  virtual void setValue (int i, const char * value);
193 
194 
205  virtual void setValue (const char * name, const char * value);
206 
207 private:
208  vector<string> _atts;
209 };
210 
211 
224 {
225 public:
227  virtual ~XMLVisitor () {}
228 
239  virtual void startXML () {}
240 
255  virtual void endXML () {}
256 
275  virtual void startElement (const char * name, const XMLAttributes &atts) {}
276 
285  virtual void endElement (const char * name) {}
286 
301  virtual void data (const char * s, int length) {}
302 
317  virtual void pi (const char * target, const char * data) {}
318 
331  virtual void warning (const char * message, int line, int column) {}
332 };
333 
334 
354 extern void readXML(istream &input, XMLVisitor &visitor,
355  const string &path="",
356  bool progress_callback(int) = NULL);
357 extern void readCompressedXML(gzFile fp, XMLVisitor &visitor,
358  const string& path="",
359  int iFileLength = -1,
360  bool progress_callback(int) = NULL);
361 
362 
381 extern void readXML (const string &path, XMLVisitor &visitor,
382  bool progress_callback(int) = NULL);
383 
384 
385 #endif // __EASYXML_HPP
386