#ifndef __xmlreader_h
#define __xmlreader_h

#include <stdio.h>

class XmlElement{
  int iTab;
  char* sName;
  int nAttrs;
  char** asAttr;
  char* sValue;
  int nChildren;
  XmlElement** axChild;

  void addAttrValue(char* sAttrValue);

  public:
  XmlElement(int iTab, char* sName);
  XmlElement* clone();
  ~XmlElement();
  void deleteChildren();
  void parseAttributes(char* sSrc, int nChars);
  void parseValue(char* sSrc, int nChars);
  void print();
  void addChild(XmlElement* xChild);
  XmlElement* getChild(int i);
  XmlElement* getChild(char* sName);
  int countChildren();
  char* getName(); // geeft een kopie van de naam van dit element
  char* getAttributeValue(int i); // geeft een bewerkte variant van de waarde
  char* getAttribute(char* sName); // geeft een bewerkte variant van de waarde van het attribuut met de gegeven naam
  char* getValue(); // geeft de bewerkte, ongecodeerde waarde van dit element
  void decode(char* sValue);
  bool isName(char* sName);
};

class XmlReader{
  XmlElement** axParent;

  int readElements(char* sBuf, int lFSize);

  public:
  XmlReader(FILE*);
  ~XmlReader();
  XmlElement* getRootElement();
};

#endif