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: spxmlparser.hpp
- Revision:
- 0:3fa97f2c0505
diff -r 000000000000 -r 3fa97f2c0505 spxmlparser.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spxmlparser.hpp Wed Nov 24 20:52:14 2010 +0000 @@ -0,0 +1,74 @@ +/* + * Copyright 2007 Stephen Liu + * LGPL, see http://code.google.com/p/spxml/ + * For license terms, see the file COPYING along with this library. + */ + +#ifndef __xmlparser_hpp__ +#define __xmlparser_hpp__ + +class SP_XmlPullEvent; +class SP_XmlPullEventQueue; +class SP_XmlReader; +class SP_XmlReaderPool; +class SP_XmlArrayList; + +class SP_XmlPullParser { +public: + SP_XmlPullParser(); + ~SP_XmlPullParser(); + + /// append more input xml source + /// @return how much byte has been consumed + int append( const char * source, int len ); + + /// @return NOT NULL : the pull event + /// @return NULL : error or need more input + SP_XmlPullEvent * getNext(); + + /// @return NOT NULL : the detail error message + /// @return NULL : no error + const char * getError(); + + int getLevel(); + + /// default ignoreWhitespace is true + void setIgnoreWhitespace( int ignoreWhitespace ); + + int getIgnoreWhitespace(); + + const char * getEncoding(); + +protected: + void changeReader( SP_XmlReader * reader ); + + SP_XmlReader * getReader( int type ); + + void setError( const char * error ); + + friend class SP_XmlReader; + +private: + SP_XmlPullEventQueue * mEventQueue; + SP_XmlReader * mReader; + SP_XmlReaderPool * mReaderPool; + SP_XmlArrayList * mTagNameStack; + + enum { eRootNone, eRootStart, eRootEnd }; + int mRootTagState; + + int mLevel; + + int mIgnoreWhitespace; + + char * mError; + + char mErrorSegment[ 32 ]; + int mErrorIndex; + int mColIndex, mRowIndex; + + char mEncoding[ 32 ]; +}; + +#endif +