Mbed port of the Simple Plain Xml parser. See http://code.google.com/p/spxml/ for more details. This library uses less memory and is much better suited to streaming data than TinyXML (doesn\'t use as much C++ features, and especially works without streams). See http://mbed.org/users/hlipka/notebook/xml-parsing/ for usage examples.
Dependents: spxmltest_weather VFD_fontx2_weather weather_LCD_display News_LCD_display ... more
spxmlstag.hpp
00001 /* 00002 * Copyright 2007 Stephen Liu 00003 * LGPL, see http://code.google.com/p/spxml/ 00004 * For license terms, see the file COPYING along with this library. 00005 */ 00006 00007 #ifndef __spxmlstag_hpp__ 00008 #define __spxmlstag_hpp__ 00009 00010 class SP_XmlSTagReader; 00011 class SP_XmlStartTagEvent; 00012 class SP_XmlStringBuffer; 00013 00014 class SP_XmlSTagParser { 00015 public: 00016 SP_XmlSTagParser( const char * encoding ); 00017 ~SP_XmlSTagParser(); 00018 00019 void append( const char * source, int len ); 00020 00021 SP_XmlStartTagEvent * takeEvent(); 00022 const char * getError(); 00023 00024 const char * getEncoding(); 00025 00026 protected: 00027 void changeReader( SP_XmlSTagReader * reader ); 00028 void setError( const char * error ); 00029 00030 SP_XmlStartTagEvent * mEvent; 00031 00032 SP_XmlStringBuffer * mStartTagName; 00033 00034 friend class SP_XmlSTagReader; 00035 00036 private: 00037 SP_XmlSTagReader * mReader; 00038 char * mError; 00039 char mEncoding[ 32 ]; 00040 }; 00041 00042 class SP_XmlSTagReader { 00043 public: 00044 SP_XmlSTagReader(); 00045 virtual ~SP_XmlSTagReader(); 00046 virtual void read( SP_XmlSTagParser * parser, char c ) = 0; 00047 00048 protected: 00049 00050 /// help to call parser->xxx 00051 void changeReader( SP_XmlSTagParser * parser, SP_XmlSTagReader * reader ); 00052 void setError( SP_XmlSTagParser * parser, const char * error ); 00053 00054 /// help to call parser->mEvent->xxx 00055 void setName( SP_XmlSTagParser * parser, const char * name ); 00056 void addAttrName( SP_XmlSTagParser * parser, const char * name ); 00057 void addAttrValue( SP_XmlSTagParser * parser, const char * value ); 00058 00059 SP_XmlStringBuffer * mBuffer; 00060 }; 00061 00062 class SP_XmlSTagNameReader : public SP_XmlSTagReader { 00063 public: 00064 SP_XmlSTagNameReader(); 00065 virtual ~SP_XmlSTagNameReader(); 00066 virtual void read( SP_XmlSTagParser * parser, char c ); 00067 }; 00068 00069 class SP_XmlSTagAttrNameReader : public SP_XmlSTagReader { 00070 public: 00071 SP_XmlSTagAttrNameReader(); 00072 virtual ~SP_XmlSTagAttrNameReader(); 00073 virtual void read( SP_XmlSTagParser * parser, char c ); 00074 00075 private: 00076 int mWait4Quot; 00077 }; 00078 00079 class SP_XmlSTagEqualMarkReader : public SP_XmlSTagReader { 00080 public: 00081 SP_XmlSTagEqualMarkReader(); 00082 virtual ~SP_XmlSTagEqualMarkReader(); 00083 virtual void read( SP_XmlSTagParser * parser, char c ); 00084 }; 00085 00086 class SP_XmlSTagAttrValueReader : public SP_XmlSTagReader { 00087 public: 00088 SP_XmlSTagAttrValueReader(); 00089 virtual ~SP_XmlSTagAttrValueReader(); 00090 virtual void read( SP_XmlSTagParser * parser, char c ); 00091 00092 private: 00093 int mHasReadQuot; 00094 }; 00095 00096 #endif 00097
Generated on Sun Jul 17 2022 09:10:11 by 1.7.2