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
Diff: spxmlevent.hpp
- Revision:
- 0:3fa97f2c0505
diff -r 000000000000 -r 3fa97f2c0505 spxmlevent.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spxmlevent.hpp Wed Nov 24 20:52:14 2010 +0000 @@ -0,0 +1,169 @@ +/* + * Copyright 2007 Stephen Liu + * LGPL, see http://code.google.com/p/spxml/ + * For license terms, see the file COPYING along with this library. + */ + +#ifndef __spxmlevent_hpp__ +#define __spxmlevent_hpp__ + +class SP_XmlArrayList; +class SP_XmlQueue; + +class SP_XmlPullEvent { +public: + enum EventType { eStartDocument, eEndDocument, ePI, + eDocDecl, eDocType, eStartTag, eEndTag, eCData, eComment }; + + SP_XmlPullEvent( int eventType ); + virtual ~SP_XmlPullEvent(); + + int getEventType(); + +private: + /// Private copy constructor and copy assignment ensure classes derived from + /// this cannot be copied. + SP_XmlPullEvent( SP_XmlPullEvent & ); + SP_XmlPullEvent & operator=( SP_XmlPullEvent & ); + +protected: + const int mEventType; +}; + +class SP_XmlPullEventQueue { +public: + SP_XmlPullEventQueue(); + ~SP_XmlPullEventQueue(); + + void enqueue( SP_XmlPullEvent * event ); + SP_XmlPullEvent * dequeue(); + +private: + SP_XmlPullEventQueue( SP_XmlPullEventQueue & ); + SP_XmlPullEventQueue & operator=( SP_XmlPullEventQueue & ); + + SP_XmlQueue * mQueue; +}; + +class SP_XmlStartDocEvent : public SP_XmlPullEvent { +public: + SP_XmlStartDocEvent(); + virtual ~SP_XmlStartDocEvent(); +}; + +class SP_XmlEndDocEvent : public SP_XmlPullEvent { +public: + SP_XmlEndDocEvent(); + virtual ~SP_XmlEndDocEvent(); +}; + +class SP_XmlDocTypeEvent : public SP_XmlPullEvent { +public: + SP_XmlDocTypeEvent(); + virtual ~SP_XmlDocTypeEvent(); + + void setName( const char * name ); + const char * getName() const; + void setSystemID( const char * systemID ); + const char * getSystemID() const; + void setPublicID( const char * publicID ); + const char * getPublicID() const; + void setDTD( const char * dtd ); + const char * getDTD() const; + +private: + char mName[ 128 ]; + char mSystemID[ 128 ]; + char mPublicID[ 128 ]; + char mDTD[ 256 ]; +}; + +class SP_XmlPIEvent : public SP_XmlPullEvent { +public: + SP_XmlPIEvent(); + virtual ~SP_XmlPIEvent(); + + void setTarget( const char * target ); + const char * getTarget(); + + void setData( const char * data, int len ); + const char * getData(); + +private: + char mTarget[ 128 ]; + char * mData; +}; + +class SP_XmlDocDeclEvent : public SP_XmlPullEvent { +public: + SP_XmlDocDeclEvent(); + virtual ~SP_XmlDocDeclEvent(); + + void setVersion( const char * version ); + const char * getVersion() const; + void setEncoding( const char * encoding ); + const char * getEncoding() const; + void setStandalone( int standalone ); + int getStandalone() const; + +private: + char mVersion[ 8 ]; + char mEncoding[ 32 ]; + int mStandalone; +}; + +class SP_XmlStartTagEvent : public SP_XmlPullEvent { +public: + SP_XmlStartTagEvent(); + virtual ~SP_XmlStartTagEvent(); + + void setName( const char * name ); + const char * getName() const; + + void addAttr( const char * name, const char * value ); + const char * getAttrValue( const char * name ) const; + int getAttrCount() const; + + /// get attribute name and value by index, return attribute name + const char * getAttr( int index, const char ** value ) const; + + void removeAttr( const char * name ); + +private: + char * mName; + SP_XmlArrayList * mAttrNameList; + SP_XmlArrayList * mAttrValueList; +}; + +class SP_XmlTextEvent : public SP_XmlPullEvent { +public: + SP_XmlTextEvent( int eventType ); + virtual ~SP_XmlTextEvent(); + + void setText( const char * text, int len ); + const char * getText() const; + +private: + char * mText; +}; + +class SP_XmlEndTagEvent : public SP_XmlTextEvent { +public: + SP_XmlEndTagEvent(); + virtual ~SP_XmlEndTagEvent(); +}; + +class SP_XmlCDataEvent : public SP_XmlTextEvent { +public: + SP_XmlCDataEvent(); + virtual ~SP_XmlCDataEvent(); +}; + +class SP_XmlCommentEvent : public SP_XmlTextEvent { +public: + SP_XmlCommentEvent(); + virtual ~SP_XmlCommentEvent(); +}; + +#endif +