1 /********************************************************
2 This sample demonstrates how to use the XMLParser
3 class to parse an XML communication protocol and
4 update model objects accordingly.
5 ********************************************************/
30 List<Track> tracks { };
32 TrackXMLParser parser { };
34 class TrackingSocket : Socket
36 unsigned int OnReceive(unsigned char * buffer, unsigned int count)
38 parser.Parse(buffer, count);
45 class TrackXMLParser : XMLParser
49 void ProcessKeyword(char * word)
51 if(!strcmpi(keyWord, "object"))
58 if(!strcmpi(word, "id")) { GetWord(); id = CopyString(word); }
59 else if(!strcmpi(word, "type")) { GetWord(); type = (ObjectType)atoi(word); }
60 else if(!strcmpi(word, "desc")) { GetWord(); desc = CopyString(word); }
64 if(!strcmp(object.id, id)) break;
69 object.description = desc;
73 tracks.Add({ id = id, type = type, description = desc });
77 else if(!strcmpi(keyWord, "/object"))
81 else if(!strcmpi(keyWord, "pos"))
83 Vector3Df position { };
86 if(!strcmpi(word, "x")) { GetWord(); position.x = atof(word); }
87 else if(!strcmpi(word, "y")) { GetWord(); position.y = atof(word); }
88 else if(!strcmpi(word, "z")) { GetWord(); position.z = atof(word); }
89 else if(!strcmpi(word, "speed")) { GetWord(); object.speed = atof(word); }
90 else if(!strcmpi(word, "dir")) { GetWord(); object.direction = atof(word); }
92 object.position = position;