メインページ   名前空間リスト   クラス階層   データ構造リスト   ファイルリスト   名前空間メンバ   データ構造メンバ   ファイルメンバ  

SaxParser.h

このファイルの解説を見る。
00001 
00002 // -*- mode: c++ -*-
00003 
00004 #ifndef MIX_SAXPARSER_H_
00005 #define MIX_SAXPARSER_H_
00006 
00007 #include <map>
00008 #include <stack>
00009 
00010 #include "classes.h"
00011 #include "misc.h"
00012 #include "Tokenizer.h"
00013 #include "SaxEventHandler.h"
00014 #include "XMLString.h"
00015 #include "AttrMap.h"
00016 
00017 namespace MiX{
00022   template <class Char,class Traits,class XMLTraits>
00023   class SaxParser{
00024     enum State{
00025       STATE_Text,
00026       STATE_Tag,
00027       STATE_Reference,
00028       STATE_Comment,
00029       STATE_Complete,
00030       STATE_Declaration,
00031       STATE_XMLDeclaration,
00032       STATE_Escape,
00033       STATE_Exception
00034     };
00035 
00036     State m_state;
00037 
00038     Tokenizer<Char,Traits,XMLTraits> m_tokenizer;
00039     SaxEventHandler<Char,Traits,XMLTraits>* m_pHandler;
00040     std::stack<XMLString<Char,Traits,XMLTraits> > m_validator;
00041     void skipSpaceTokens();
00042 
00044     //空白を除去
00045     bool m_bIgnoreSpace;
00046     //一級パーサ
00047     State parseText();
00048     State parseTag();
00049     State parseComment();
00050     State parseDeclaration();
00051     State parseXMLDeclaration();
00052     //二級パーサ(一級パーサのヘルパ)
00053     AttrMap<Char,Traits,XMLTraits> parseAttributes();
00054     XMLString<Char,Traits,XMLTraits> parseReference();
00055     //ヘルパ関数
00056     void trimRight(XMLString<Char,Traits,XMLTraits>& str);
00057   public:
00059     SaxParser();
00066     void setEventHandler(SaxEventHandler<Char,Traits,XMLTraits>* handler);
00073     void setIgnoreSpace(bool bFlag);
00080     bool parse(const Char* szText);
00081   };
00082 }
00083 
00084 #ifndef MIX_SAXPARSER_CPP_
00085 #include "SaxParser.cpp"
00086 #endif
00087 
00088 #endif

MiXに対してSat Mar 2 22:52:07 2002に生成されました。 doxygen1.2.11.1 の開発者: Dimitri van Heesch, © 1997-2001