00001 //XML file loader 00002 00003 class XMLAttr { 00004 public: 00005 String name; 00006 String value; 00007 }; 00008 00009 class XMLTag { 00010 public: 00011 //data 00012 String name; //<"NAME"> 00013 List<XMLAttr *> args; //<name "ARGS=XYZ ETC..."> 00014 String uname; //<"NAME1"> //unique name 00015 String content; //<name> "CONTENT" </name> 00016 List<XMLTag *>list; //children 00017 XMLTag *parent; 00018 }; 00019 00020 class XMLFile : public SystemCode, public Enumerator { 00021 private: 00022 XMLTag *enumpath; 00023 int enumidx; 00024 public: 00025 int Line; //indicates last line read (useful only if error occurs on Read()) 00026 XMLTag header; //<?xml version="1.0" encoding="UTF-8"?> 00027 XMLTag root; 00028 BOOL Read(File &f); 00029 BOOL Read(char *fn, int flgs = FO_RDONLY); 00030 BOOL AddTag(XMLTag *); //add tag to root tag 00031 XMLTag *GetTag(char *path); //find a tag using uname path (ie: "tag1/tag2/comment1") 00032 void DeleteAll(); //clear root and all children hiearchy 00033 BOOL DeleteTag(XMLTag *t); //delete any tag 00034 BOOL Write(File &f); 00035 BOOL Write(char *fn, int flgs = FO_RDWR | FO_CREATE | FO_TRUNC); 00036 XMLFile(); 00037 ~XMLFile() {DeleteAll();} 00038 //Enumerator class members 00039 BOOL First(char *); 00040 BOOL Next(); 00041 BOOL Close(); 00042 BOOL IsFolder(); 00043 void GetRootPath(String &s); 00044 }; 00045 00046