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

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers spxmlevent.hpp Source File

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