/** @file XmlEventHandler.h @brief
*	Copyright (c) 2007,第九城市游戏研发中心
*	All rights reserved.
*
*	当前版本:
*	作    者:zhangsongwei
*	完成日期:2007-11-2
*
*	取代版本:
*	作    者:
*	完成日期:
*/ #ifndef XML_EVENT_HANDLER_H #define XML_EVENT_HANDLER_H #include "aceall.h" #include #ifdef USE_ACE_SAX_PARSE class CElement; /** * @class CXmlEventHandler * * @brief 基于SAX的事件处理器 * * 定义基于SAX的解析的相关操作 */ class CXmlEventHandler : public ACEXML_DefaultHandler { public: /// 构造 CXmlEventHandler(const ACEXML_Char* pszXmlName, std::vector &elementSet); /// 析构 virtual ~CXmlEventHandler(void); public: /// 设置文档定位器 virtual void setDocumentLocator (ACEXML_Locator *pLocator); /// 文档开始时触发 virtual void startDocument (ACEXML_ENV_SINGLE_ARG_DECL); /// 文档结束时触发 virtual void endDocument (ACEXML_ENV_SINGLE_ARG_DECL); /// 处理文本时触发 virtual void characters (const ACEXML_Char *pCh, size_t uiStart, size_t uiLength ACEXML_ENV_ARG_DECL); /// 元素开始时触发 virtual void startElement (const ACEXML_Char *pszNamespaceURI, const ACEXML_Char *pszLocalName, const ACEXML_Char *pszQName, ACEXML_Attributes *pAlist ACEXML_ENV_ARG_DECL_NOT_USED); /// 元素结束时触发 virtual void endElement (const ACEXML_Char *pszNamespaceURI, const ACEXML_Char *pszLocalName, const ACEXML_Char *qName ACEXML_ENV_ARG_DECL); /// 忽略空格 /*virtual void ignorableWhitespace (const ACEXML_Char *ch, int start, int length ACEXML_ENV_ARG_DECL);*/ /// 错误时触发 virtual void error (ACEXML_SAXParseException &exception ACEXML_ENV_ARG_DECL); /// 致命错误时触发 virtual void fatalError (ACEXML_SAXParseException &exception ACEXML_ENV_ARG_DECL); /// 警告时触发 virtual void warning (ACEXML_SAXParseException &exception ACEXML_ENV_ARG_DECL); /// 层次自加 void IncLevel(void); /// 层次自减 void DecLevel(void); private: /// 拷贝构造 CXmlEventHandler(const CXmlEventHandler &); /// 赋值 CXmlEventHandler &operator=(const CXmlEventHandler &); private: /// 文件名 ACEXML_Char *m_pszFileName; /// 定位器 ACEXML_Locator * m_pLocator; /// 当前层次 unsigned int m_uiCurrentLevel; /// 元素集 std::vector &m_elementSet; /// 临时变量 CElement *m_pTemp; }; #endif/*USE_ACE_SAX_PARSE*/ #endif/*XML_EVENT_HANDLER_H*/