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

Committer:
hlipka
Date:
Wed Nov 24 20:52:14 2010 +0000
Revision:
0:3fa97f2c0505
initial revision

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hlipka 0:3fa97f2c0505 1 /*
hlipka 0:3fa97f2c0505 2 * Copyright 2007 Stephen Liu
hlipka 0:3fa97f2c0505 3 * LGPL, see http://code.google.com/p/spxml/
hlipka 0:3fa97f2c0505 4 * For license terms, see the file COPYING along with this library.
hlipka 0:3fa97f2c0505 5 */
hlipka 0:3fa97f2c0505 6
hlipka 0:3fa97f2c0505 7 #ifndef __spxmlevent_hpp__
hlipka 0:3fa97f2c0505 8 #define __spxmlevent_hpp__
hlipka 0:3fa97f2c0505 9
hlipka 0:3fa97f2c0505 10 class SP_XmlArrayList;
hlipka 0:3fa97f2c0505 11 class SP_XmlQueue;
hlipka 0:3fa97f2c0505 12
hlipka 0:3fa97f2c0505 13 class SP_XmlPullEvent {
hlipka 0:3fa97f2c0505 14 public:
hlipka 0:3fa97f2c0505 15 enum EventType { eStartDocument, eEndDocument, ePI,
hlipka 0:3fa97f2c0505 16 eDocDecl, eDocType, eStartTag, eEndTag, eCData, eComment };
hlipka 0:3fa97f2c0505 17
hlipka 0:3fa97f2c0505 18 SP_XmlPullEvent( int eventType );
hlipka 0:3fa97f2c0505 19 virtual ~SP_XmlPullEvent();
hlipka 0:3fa97f2c0505 20
hlipka 0:3fa97f2c0505 21 int getEventType();
hlipka 0:3fa97f2c0505 22
hlipka 0:3fa97f2c0505 23 private:
hlipka 0:3fa97f2c0505 24 /// Private copy constructor and copy assignment ensure classes derived from
hlipka 0:3fa97f2c0505 25 /// this cannot be copied.
hlipka 0:3fa97f2c0505 26 SP_XmlPullEvent( SP_XmlPullEvent & );
hlipka 0:3fa97f2c0505 27 SP_XmlPullEvent & operator=( SP_XmlPullEvent & );
hlipka 0:3fa97f2c0505 28
hlipka 0:3fa97f2c0505 29 protected:
hlipka 0:3fa97f2c0505 30 const int mEventType;
hlipka 0:3fa97f2c0505 31 };
hlipka 0:3fa97f2c0505 32
hlipka 0:3fa97f2c0505 33 class SP_XmlPullEventQueue {
hlipka 0:3fa97f2c0505 34 public:
hlipka 0:3fa97f2c0505 35 SP_XmlPullEventQueue();
hlipka 0:3fa97f2c0505 36 ~SP_XmlPullEventQueue();
hlipka 0:3fa97f2c0505 37
hlipka 0:3fa97f2c0505 38 void enqueue( SP_XmlPullEvent * event );
hlipka 0:3fa97f2c0505 39 SP_XmlPullEvent * dequeue();
hlipka 0:3fa97f2c0505 40
hlipka 0:3fa97f2c0505 41 private:
hlipka 0:3fa97f2c0505 42 SP_XmlPullEventQueue( SP_XmlPullEventQueue & );
hlipka 0:3fa97f2c0505 43 SP_XmlPullEventQueue & operator=( SP_XmlPullEventQueue & );
hlipka 0:3fa97f2c0505 44
hlipka 0:3fa97f2c0505 45 SP_XmlQueue * mQueue;
hlipka 0:3fa97f2c0505 46 };
hlipka 0:3fa97f2c0505 47
hlipka 0:3fa97f2c0505 48 class SP_XmlStartDocEvent : public SP_XmlPullEvent {
hlipka 0:3fa97f2c0505 49 public:
hlipka 0:3fa97f2c0505 50 SP_XmlStartDocEvent();
hlipka 0:3fa97f2c0505 51 virtual ~SP_XmlStartDocEvent();
hlipka 0:3fa97f2c0505 52 };
hlipka 0:3fa97f2c0505 53
hlipka 0:3fa97f2c0505 54 class SP_XmlEndDocEvent : public SP_XmlPullEvent {
hlipka 0:3fa97f2c0505 55 public:
hlipka 0:3fa97f2c0505 56 SP_XmlEndDocEvent();
hlipka 0:3fa97f2c0505 57 virtual ~SP_XmlEndDocEvent();
hlipka 0:3fa97f2c0505 58 };
hlipka 0:3fa97f2c0505 59
hlipka 0:3fa97f2c0505 60 class SP_XmlDocTypeEvent : public SP_XmlPullEvent {
hlipka 0:3fa97f2c0505 61 public:
hlipka 0:3fa97f2c0505 62 SP_XmlDocTypeEvent();
hlipka 0:3fa97f2c0505 63 virtual ~SP_XmlDocTypeEvent();
hlipka 0:3fa97f2c0505 64
hlipka 0:3fa97f2c0505 65 void setName( const char * name );
hlipka 0:3fa97f2c0505 66 const char * getName() const;
hlipka 0:3fa97f2c0505 67 void setSystemID( const char * systemID );
hlipka 0:3fa97f2c0505 68 const char * getSystemID() const;
hlipka 0:3fa97f2c0505 69 void setPublicID( const char * publicID );
hlipka 0:3fa97f2c0505 70 const char * getPublicID() const;
hlipka 0:3fa97f2c0505 71 void setDTD( const char * dtd );
hlipka 0:3fa97f2c0505 72 const char * getDTD() const;
hlipka 0:3fa97f2c0505 73
hlipka 0:3fa97f2c0505 74 private:
hlipka 0:3fa97f2c0505 75 char mName[ 128 ];
hlipka 0:3fa97f2c0505 76 char mSystemID[ 128 ];
hlipka 0:3fa97f2c0505 77 char mPublicID[ 128 ];
hlipka 0:3fa97f2c0505 78 char mDTD[ 256 ];
hlipka 0:3fa97f2c0505 79 };
hlipka 0:3fa97f2c0505 80
hlipka 0:3fa97f2c0505 81 class SP_XmlPIEvent : public SP_XmlPullEvent {
hlipka 0:3fa97f2c0505 82 public:
hlipka 0:3fa97f2c0505 83 SP_XmlPIEvent();
hlipka 0:3fa97f2c0505 84 virtual ~SP_XmlPIEvent();
hlipka 0:3fa97f2c0505 85
hlipka 0:3fa97f2c0505 86 void setTarget( const char * target );
hlipka 0:3fa97f2c0505 87 const char * getTarget();
hlipka 0:3fa97f2c0505 88
hlipka 0:3fa97f2c0505 89 void setData( const char * data, int len );
hlipka 0:3fa97f2c0505 90 const char * getData();
hlipka 0:3fa97f2c0505 91
hlipka 0:3fa97f2c0505 92 private:
hlipka 0:3fa97f2c0505 93 char mTarget[ 128 ];
hlipka 0:3fa97f2c0505 94 char * mData;
hlipka 0:3fa97f2c0505 95 };
hlipka 0:3fa97f2c0505 96
hlipka 0:3fa97f2c0505 97 class SP_XmlDocDeclEvent : public SP_XmlPullEvent {
hlipka 0:3fa97f2c0505 98 public:
hlipka 0:3fa97f2c0505 99 SP_XmlDocDeclEvent();
hlipka 0:3fa97f2c0505 100 virtual ~SP_XmlDocDeclEvent();
hlipka 0:3fa97f2c0505 101
hlipka 0:3fa97f2c0505 102 void setVersion( const char * version );
hlipka 0:3fa97f2c0505 103 const char * getVersion() const;
hlipka 0:3fa97f2c0505 104 void setEncoding( const char * encoding );
hlipka 0:3fa97f2c0505 105 const char * getEncoding() const;
hlipka 0:3fa97f2c0505 106 void setStandalone( int standalone );
hlipka 0:3fa97f2c0505 107 int getStandalone() const;
hlipka 0:3fa97f2c0505 108
hlipka 0:3fa97f2c0505 109 private:
hlipka 0:3fa97f2c0505 110 char mVersion[ 8 ];
hlipka 0:3fa97f2c0505 111 char mEncoding[ 32 ];
hlipka 0:3fa97f2c0505 112 int mStandalone;
hlipka 0:3fa97f2c0505 113 };
hlipka 0:3fa97f2c0505 114
hlipka 0:3fa97f2c0505 115 class SP_XmlStartTagEvent : public SP_XmlPullEvent {
hlipka 0:3fa97f2c0505 116 public:
hlipka 0:3fa97f2c0505 117 SP_XmlStartTagEvent();
hlipka 0:3fa97f2c0505 118 virtual ~SP_XmlStartTagEvent();
hlipka 0:3fa97f2c0505 119
hlipka 0:3fa97f2c0505 120 void setName( const char * name );
hlipka 0:3fa97f2c0505 121 const char * getName() const;
hlipka 0:3fa97f2c0505 122
hlipka 0:3fa97f2c0505 123 void addAttr( const char * name, const char * value );
hlipka 0:3fa97f2c0505 124 const char * getAttrValue( const char * name ) const;
hlipka 0:3fa97f2c0505 125 int getAttrCount() const;
hlipka 0:3fa97f2c0505 126
hlipka 0:3fa97f2c0505 127 /// get attribute name and value by index, return attribute name
hlipka 0:3fa97f2c0505 128 const char * getAttr( int index, const char ** value ) const;
hlipka 0:3fa97f2c0505 129
hlipka 0:3fa97f2c0505 130 void removeAttr( const char * name );
hlipka 0:3fa97f2c0505 131
hlipka 0:3fa97f2c0505 132 private:
hlipka 0:3fa97f2c0505 133 char * mName;
hlipka 0:3fa97f2c0505 134 SP_XmlArrayList * mAttrNameList;
hlipka 0:3fa97f2c0505 135 SP_XmlArrayList * mAttrValueList;
hlipka 0:3fa97f2c0505 136 };
hlipka 0:3fa97f2c0505 137
hlipka 0:3fa97f2c0505 138 class SP_XmlTextEvent : public SP_XmlPullEvent {
hlipka 0:3fa97f2c0505 139 public:
hlipka 0:3fa97f2c0505 140 SP_XmlTextEvent( int eventType );
hlipka 0:3fa97f2c0505 141 virtual ~SP_XmlTextEvent();
hlipka 0:3fa97f2c0505 142
hlipka 0:3fa97f2c0505 143 void setText( const char * text, int len );
hlipka 0:3fa97f2c0505 144 const char * getText() const;
hlipka 0:3fa97f2c0505 145
hlipka 0:3fa97f2c0505 146 private:
hlipka 0:3fa97f2c0505 147 char * mText;
hlipka 0:3fa97f2c0505 148 };
hlipka 0:3fa97f2c0505 149
hlipka 0:3fa97f2c0505 150 class SP_XmlEndTagEvent : public SP_XmlTextEvent {
hlipka 0:3fa97f2c0505 151 public:
hlipka 0:3fa97f2c0505 152 SP_XmlEndTagEvent();
hlipka 0:3fa97f2c0505 153 virtual ~SP_XmlEndTagEvent();
hlipka 0:3fa97f2c0505 154 };
hlipka 0:3fa97f2c0505 155
hlipka 0:3fa97f2c0505 156 class SP_XmlCDataEvent : public SP_XmlTextEvent {
hlipka 0:3fa97f2c0505 157 public:
hlipka 0:3fa97f2c0505 158 SP_XmlCDataEvent();
hlipka 0:3fa97f2c0505 159 virtual ~SP_XmlCDataEvent();
hlipka 0:3fa97f2c0505 160 };
hlipka 0:3fa97f2c0505 161
hlipka 0:3fa97f2c0505 162 class SP_XmlCommentEvent : public SP_XmlTextEvent {
hlipka 0:3fa97f2c0505 163 public:
hlipka 0:3fa97f2c0505 164 SP_XmlCommentEvent();
hlipka 0:3fa97f2c0505 165 virtual ~SP_XmlCommentEvent();
hlipka 0:3fa97f2c0505 166 };
hlipka 0:3fa97f2c0505 167
hlipka 0:3fa97f2c0505 168 #endif
hlipka 0:3fa97f2c0505 169