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: spdomparser.hpp
- Revision:
- 0:3fa97f2c0505
diff -r 000000000000 -r 3fa97f2c0505 spdomparser.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spdomparser.hpp Wed Nov 24 20:52:14 2010 +0000 @@ -0,0 +1,83 @@ +/* + * Copyright 2007 Stephen Liu + * LGPL, see http://code.google.com/p/spxml/ + * For license terms, see the file COPYING along with this library. + */ + +#ifndef __spdomparser_hpp__ +#define __spdomparser_hpp__ + +class SP_XmlNode; +class SP_XmlDocument; +class SP_XmlElementNode; +class SP_XmlDocDeclNode; +class SP_XmlDocTypeNode; +class SP_XmlPullParser; +class SP_XmlStringBuffer; + +/// parse string to xml node tree +class SP_XmlDomParser { +public: + SP_XmlDomParser(); + ~SP_XmlDomParser(); + + /// append more input xml source + /// @return how much byte has been consumed + int append( const char * source, int len ); + + /// @return NOT NULL : the detail error message + /// @return NULL : no error + const char * getError(); + + /// get the parse result + const SP_XmlDocument * getDocument() const; + + void setIgnoreWhitespace( int ignoreWhitespace ); + + int getIgnoreWhitespace(); + + const char * getEncoding(); + +private: + void buildTree(); + + SP_XmlDomParser( SP_XmlDomParser & ); + SP_XmlDomParser & operator=( SP_XmlDomParser & ); + + SP_XmlPullParser * mParser; + SP_XmlDocument * mDocument; + SP_XmlElementNode * mCurrent; +}; + +/// serialize xml node tree to string +class SP_XmlDomBuffer { +public: + SP_XmlDomBuffer( const SP_XmlNode * node, int indent = 1 ); + SP_XmlDomBuffer( const char * encoding, const SP_XmlNode * node, int indent = 1 ); + ~SP_XmlDomBuffer(); + + const char * getBuffer() const; + int getSize() const; + +private: + SP_XmlDomBuffer( SP_XmlDomBuffer & ); + SP_XmlDomBuffer & operator=( SP_XmlDomBuffer & ); + + static void dumpDocDecl( const char * encoding, + const SP_XmlDocDeclNode * docDecl, + SP_XmlStringBuffer * buffer, int level ); + static void dumpDocType( const char * encoding, + const SP_XmlDocTypeNode * docType, + SP_XmlStringBuffer * buffer, int level ); + static void dump( const char * encoding, + const SP_XmlNode * node, + SP_XmlStringBuffer * buffer, int level ); + static void dumpElement( const char * encoding, + const SP_XmlNode * node, + SP_XmlStringBuffer * buffer, int level ); + + SP_XmlStringBuffer * mBuffer; +}; + +#endif +