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
spxmlevent.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 __spxmlevent_hpp__ 00008 #define __spxmlevent_hpp__ 00009 00010 class SP_XmlArrayList; 00011 class SP_XmlQueue; 00012 00013 class SP_XmlPullEvent { 00014 public: 00015 enum EventType { eStartDocument, eEndDocument, ePI, 00016 eDocDecl, eDocType, eStartTag, eEndTag, eCData, eComment }; 00017 00018 SP_XmlPullEvent( int eventType ); 00019 virtual ~SP_XmlPullEvent(); 00020 00021 int getEventType(); 00022 00023 private: 00024 /// Private copy constructor and copy assignment ensure classes derived from 00025 /// this cannot be copied. 00026 SP_XmlPullEvent( SP_XmlPullEvent & ); 00027 SP_XmlPullEvent & operator=( SP_XmlPullEvent & ); 00028 00029 protected: 00030 const int mEventType; 00031 }; 00032 00033 class SP_XmlPullEventQueue { 00034 public: 00035 SP_XmlPullEventQueue(); 00036 ~SP_XmlPullEventQueue(); 00037 00038 void enqueue( SP_XmlPullEvent * event ); 00039 SP_XmlPullEvent * dequeue(); 00040 00041 private: 00042 SP_XmlPullEventQueue( SP_XmlPullEventQueue & ); 00043 SP_XmlPullEventQueue & operator=( SP_XmlPullEventQueue & ); 00044 00045 SP_XmlQueue * mQueue; 00046 }; 00047 00048 class SP_XmlStartDocEvent : public SP_XmlPullEvent { 00049 public: 00050 SP_XmlStartDocEvent(); 00051 virtual ~SP_XmlStartDocEvent(); 00052 }; 00053 00054 class SP_XmlEndDocEvent : public SP_XmlPullEvent { 00055 public: 00056 SP_XmlEndDocEvent(); 00057 virtual ~SP_XmlEndDocEvent(); 00058 }; 00059 00060 class SP_XmlDocTypeEvent : public SP_XmlPullEvent { 00061 public: 00062 SP_XmlDocTypeEvent(); 00063 virtual ~SP_XmlDocTypeEvent(); 00064 00065 void setName( const char * name ); 00066 const char * getName() const; 00067 void setSystemID( const char * systemID ); 00068 const char * getSystemID() const; 00069 void setPublicID( const char * publicID ); 00070 const char * getPublicID() const; 00071 void setDTD( const char * dtd ); 00072 const char * getDTD() const; 00073 00074 private: 00075 char mName[ 128 ]; 00076 char mSystemID[ 128 ]; 00077 char mPublicID[ 128 ]; 00078 char mDTD[ 256 ]; 00079 }; 00080 00081 class SP_XmlPIEvent : public SP_XmlPullEvent { 00082 public: 00083 SP_XmlPIEvent(); 00084 virtual ~SP_XmlPIEvent(); 00085 00086 void setTarget( const char * target ); 00087 const char * getTarget(); 00088 00089 void setData( const char * data, int len ); 00090 const char * getData(); 00091 00092 private: 00093 char mTarget[ 128 ]; 00094 char * mData; 00095 }; 00096 00097 class SP_XmlDocDeclEvent : public SP_XmlPullEvent { 00098 public: 00099 SP_XmlDocDeclEvent(); 00100 virtual ~SP_XmlDocDeclEvent(); 00101 00102 void setVersion( const char * version ); 00103 const char * getVersion() const; 00104 void setEncoding( const char * encoding ); 00105 const char * getEncoding() const; 00106 void setStandalone( int standalone ); 00107 int getStandalone() const; 00108 00109 private: 00110 char mVersion[ 8 ]; 00111 char mEncoding[ 32 ]; 00112 int mStandalone; 00113 }; 00114 00115 class SP_XmlStartTagEvent : public SP_XmlPullEvent { 00116 public: 00117 SP_XmlStartTagEvent(); 00118 virtual ~SP_XmlStartTagEvent(); 00119 00120 void setName( const char * name ); 00121 const char * getName() const; 00122 00123 void addAttr( const char * name, const char * value ); 00124 const char * getAttrValue( const char * name ) const; 00125 int getAttrCount() const; 00126 00127 /// get attribute name and value by index, return attribute name 00128 const char * getAttr( int index, const char ** value ) const; 00129 00130 void removeAttr( const char * name ); 00131 00132 private: 00133 char * mName; 00134 SP_XmlArrayList * mAttrNameList; 00135 SP_XmlArrayList * mAttrValueList; 00136 }; 00137 00138 class SP_XmlTextEvent : public SP_XmlPullEvent { 00139 public: 00140 SP_XmlTextEvent( int eventType ); 00141 virtual ~SP_XmlTextEvent(); 00142 00143 void setText( const char * text, int len ); 00144 const char * getText() const; 00145 00146 private: 00147 char * mText; 00148 }; 00149 00150 class SP_XmlEndTagEvent : public SP_XmlTextEvent { 00151 public: 00152 SP_XmlEndTagEvent(); 00153 virtual ~SP_XmlEndTagEvent(); 00154 }; 00155 00156 class SP_XmlCDataEvent : public SP_XmlTextEvent { 00157 public: 00158 SP_XmlCDataEvent(); 00159 virtual ~SP_XmlCDataEvent(); 00160 }; 00161 00162 class SP_XmlCommentEvent : public SP_XmlTextEvent { 00163 public: 00164 SP_XmlCommentEvent(); 00165 virtual ~SP_XmlCommentEvent(); 00166 }; 00167 00168 #endif 00169
Generated on Sun Jul 17 2022 09:10:11 by 1.7.2