www.pudn.com > 2003090514065121890.zip > spXMLTag.h
#ifndef __SP_BASE_XMLTAG_H_ #define __SP_BASE_XMLTAG_H_ /* 2002/07/02 定义用于解开负载均衡信息和故障信息的XML分析类 只能完成基本的功能,并且其派生类只能够完成用于SP 的分析功能 v1.0 只能实现对的分析,并且不允许嵌套 不允许一个Data中出现多个Section字段 格式:info字段表示具体内容*/ #include 1 XXXX YYYY ZZZZ namespace spBase {// //根据参数生成 查询可用服务器的命令字符串 // iSeq,iTicket 表示请求的序号,唯一 // iClientType : 保留,请指定为0 // pszBuffer : 保存数据的缓冲区,至少为100 字节 // iMaxLen : 缓冲区最大长度 // return : NULL if error // 生成的数据格式为: " extern "C" LPCSTR FormatServerQueryCmd(int iSeq,int iClientType,int iTicketID,char* pszBuffer,int iMaxLen); // 返回数据格式为: iSeq 0 RSVR iTicketID " class CDataTag; class CSectionTag; class CValueTag; class CXMLTag { public: CXMLTag(); // CXMLTag(LPCSTR pszSrc); ~CXMLTag(); CXMLTag& operator = (CXMLTag& tagData); // static LPCSTR Encode(LPCSTR pszSrc,CString& szDest); // static LPCSTR Decode(LPCSTR pszSrc,CString& szDest); public: //开始分析,会自动从pszSrc中取出第一个标记 //iTagEndPos 返回为标记结束的位置,指向 > 后一个字符 virtual BOOL Parse(LPCSTR pszSrc,int& iTagEndPos); public://attribute LPCSTR GetTagName(void); LPCSTR GetTagProp(void); LPCSTR GetTagValue(void); LPCSTR GetInnerTag(void); protected: // 在数据源中查找第一合法的标记 int FindFirstTagName(LPCSTR pszSrc,CString& szTagName); //在数据源中查找指定的标记的结束位置 //返回返回 -1表示失败 int FindMatchFinishTag(LPCSTR pszSrc,LPCSTR pszTag); public: //名称,值,属性 CString m_szTagName,m_szTagValue,m_szTagProp; //包含在标记内部的标记 CString m_szInnerTagSrc; }; class CSectionTag { public: CSectionTag(){}; ~CSectionTag(){}; public: virtual BOOL Parse(LPCSTR pszSrc); virtual void SplitTag(LPCSTR pszSrc); virtual CXMLTag& operator = (CXMLTag& tagData){return tagData;}; }; class CErrorMonitorSectionTag : public CSectionTag {//故障信息收集 section 字段 public: CErrorMonitorSectionTag(); ~CErrorMonitorSectionTag(); public: virtual CXMLTag& operator = (CXMLTag& tagData); public: CXMLTag m_tagSeq,m_tagCata,m_tagPos,m_tagErrorCode,m_tagDesc; }; class CBalanceLoadSectionTag : public CSectionTag {//负载均衡信息收集 section 字段 public: CBalanceLoadSectionTag(); ~CBalanceLoadSectionTag(); public: virtual CXMLTag& operator = (CXMLTag& tagData); public: CXMLTag m_tagSeq,m_tagType,m_tagPara; }; class CSvrQuerySectionTag : public CSectionTag {//可用服务器查询 section 字段 // 查询格式为: iSeq 0 RSVR iTicketID server address " // 返回格式为: iSeq 0 RSVR iTicketID " public: CSvrQuerySectionTag(); ~CSvrQuerySectionTag(); public: virtual CXMLTag& operator = (CXMLTag& tagData); public: CXMLTag m_tagSeq,m_tagClient,m_tagTicket,m_tagRequest,m_tagAsk,m_tagAnswer; }; class CDataTag {//DATA字段 public: CDataTag(); ~CDataTag(); public: virtual BOOL Parse(LPCSTR pszSrc,int& iTagEndPos); public: CXMLTag m_tagData; }; };// end namespace #endif iSeq 0 RSVR iTicketID server address