gxXmlAbstractParser Class Reference

Helper class for implementing an XML parser. More...

#include <gxXmlAbstractParser.h>

Inheritance diagram for gxXmlAbstractParser:

gxXmlTableParser List of all members.

Public Types

enum  {
  PARSE_OK = XML_ERROR_NONE, PARSE_BADELEMENT = XML_ERROR_NONE + 400, PARSE_BADATTRIBUTE = XML_ERROR_NONE + 401, PARSE_CANTBEROOT = XML_ERROR_NONE + 402,
  PARSE_MUSTBEROOT = XML_ERROR_NONE + 403, PARSE_MISSINGATTRIBUTE = XML_ERROR_NONE + 404, PARSE_APPERROR = XML_ERROR_NONE + 500
}

Public Member Functions

 gxXmlAbstractParser (char *elemSpecs[]=NULL)
 Constructor takes an optional list of element specs of the form: { "@docroot;attr1;attr2", "elem1;attr3;attr4", NULL }.
virtual ~gxXmlAbstractParser ()
int parse (const std::string &s, int isFinal=true)
int parse (const char *s, int len, int isFinal=true)
void stop ()
 Stop the parser without setting error code/message.
void error (const char *errorMessage, int errorCode=PARSE_APPERROR)
 Stop the parser supplying an error code/message.
void clear ()
int getLastError ()
std::string getLastErrorMessage ()
void setLastError (int error)
void setLastErrorMessage (const char *message)
void addSpec (const char *spec)

Protected Types

typedef std::map< std::string,
gxXmlElementSpec
element_specs_t
typedef std::list< gxXmlElementcontext_t

Protected Member Functions

virtual int verifyElement ()
virtual void onElement ()=0
gxXmlElementgetCurrentElement ()
bool hasParent ()
gxXmlElementgetParentElement ()

Protected Attributes

element_specs_t elementSpecs
context_t m_context

Detailed Description

Helper class for implementing an XML parser.

Takes care of invoking the expat parser, validating elements/attributes, and maintaining a context stack of the XML elements currently being parsed.

When implementing an application specific parser, create a new class derived from gxXmlAbstractParser and override onElement. Within onElement you can invoke helper methods such as getCurrentElement, getParentElement etc.


Member Typedef Documentation

typedef std::list< gxXmlElement> gxXmlAbstractParser::context_t [protected]
 

typedef std::map<std::string, gxXmlElementSpec> gxXmlAbstractParser::element_specs_t [protected]
 


Member Enumeration Documentation

anonymous enum
 

Enumerator:
PARSE_OK 
PARSE_BADELEMENT 
PARSE_BADATTRIBUTE 
PARSE_CANTBEROOT 
PARSE_MUSTBEROOT 
PARSE_MISSINGATTRIBUTE 
PARSE_APPERROR 


Constructor & Destructor Documentation

gxXmlAbstractParser::gxXmlAbstractParser char *  elemSpecs[] = NULL  ) 
 

Constructor takes an optional list of element specs of the form: { "@docroot;attr1;attr2", "elem1;attr3;attr4", NULL }.

virtual gxXmlAbstractParser::~gxXmlAbstractParser  )  [virtual]
 


Member Function Documentation

void gxXmlAbstractParser::addSpec const char *  spec  ) 
 

void gxXmlAbstractParser::clear  ) 
 

void gxXmlAbstractParser::error const char *  errorMessage,
int  errorCode = PARSE_APPERROR
 

Stop the parser supplying an error code/message.

gxXmlElement& gxXmlAbstractParser::getCurrentElement  )  [protected]
 

int gxXmlAbstractParser::getLastError  ) 
 

std::string gxXmlAbstractParser::getLastErrorMessage  ) 
 

gxXmlElement& gxXmlAbstractParser::getParentElement  )  [protected]
 

bool gxXmlAbstractParser::hasParent  )  [protected]
 

virtual void gxXmlAbstractParser::onElement  )  [protected, pure virtual]
 

Implemented in gxXmlTableParser.

int gxXmlAbstractParser::parse const char *  s,
int  len,
int  isFinal = true
 

int gxXmlAbstractParser::parse const std::string &  s,
int  isFinal = true
 

void gxXmlAbstractParser::setLastError int  error  ) 
 

void gxXmlAbstractParser::setLastErrorMessage const char *  message  ) 
 

void gxXmlAbstractParser::stop  ) 
 

Stop the parser without setting error code/message.

virtual int gxXmlAbstractParser::verifyElement  )  [protected, virtual]
 


Member Data Documentation

element_specs_t gxXmlAbstractParser::elementSpecs [protected]
 

context_t gxXmlAbstractParser::m_context [protected]
 


The documentation for this class was generated from the following file:
Generated on Mon Nov 21 01:01:37 2005 for gxLib by  doxygen 1.4.5