class XMLParser
{
- virtual void ProcessKeyword(char * keyWord);
- virtual void ProcessCharacterData(char * data);
+ virtual void ProcessKeyword(const char * keyWord);
+ virtual void ProcessCharacterData(const char * data);
char keyWord[1024];
char * string;
int xmlDepth;
bool closingTag;
bool openingTag;
+ char * characterData;
+ uint charBufSize;
+
+ charBufSize = CHARBUFSIZE;
+
+ ~XMLParser()
+ {
+ delete characterData;
+ }
bool GetWord()
{
return false;
}
- bool Parse(char * inputString, int count)
+ bool Parse(const char * inputString, int count)
{
bool insideTag = false;
char tag[MAX_TAG_LEN];
- int tagLen;
+ int tagLen = 0;
bool commented = false;
byte lastCh = ' ';
int stringPos;
- byte characterData[CHARBUFSIZE];
+ char * characterData = this.characterData;
int charLen = 0;
int oldDepth = xmlDepth;
tag[0] = 0;
// Parse entire file
for(stringPos = 0; stringPos < count; stringPos++)
{
- byte ch = inputString[stringPos];
+ char ch = inputString[stringPos];
if(commented)
{
}
else
{
- if(ch == '<' || charLen == CHARBUFSIZE - 1)
+ if(!characterData)
+ this.characterData = characterData = new byte[charBufSize];
+ if(ch == '<' || charLen == charBufSize - 1)
{
ProcessCharacterData(characterData);
charLen = 0;