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 __spxmlstag_hpp__
hlipka 0:3fa97f2c0505 8 #define __spxmlstag_hpp__
hlipka 0:3fa97f2c0505 9
hlipka 0:3fa97f2c0505 10 class SP_XmlSTagReader;
hlipka 0:3fa97f2c0505 11 class SP_XmlStartTagEvent;
hlipka 0:3fa97f2c0505 12 class SP_XmlStringBuffer;
hlipka 0:3fa97f2c0505 13
hlipka 0:3fa97f2c0505 14 class SP_XmlSTagParser {
hlipka 0:3fa97f2c0505 15 public:
hlipka 0:3fa97f2c0505 16 SP_XmlSTagParser( const char * encoding );
hlipka 0:3fa97f2c0505 17 ~SP_XmlSTagParser();
hlipka 0:3fa97f2c0505 18
hlipka 0:3fa97f2c0505 19 void append( const char * source, int len );
hlipka 0:3fa97f2c0505 20
hlipka 0:3fa97f2c0505 21 SP_XmlStartTagEvent * takeEvent();
hlipka 0:3fa97f2c0505 22 const char * getError();
hlipka 0:3fa97f2c0505 23
hlipka 0:3fa97f2c0505 24 const char * getEncoding();
hlipka 0:3fa97f2c0505 25
hlipka 0:3fa97f2c0505 26 protected:
hlipka 0:3fa97f2c0505 27 void changeReader( SP_XmlSTagReader * reader );
hlipka 0:3fa97f2c0505 28 void setError( const char * error );
hlipka 0:3fa97f2c0505 29
hlipka 0:3fa97f2c0505 30 SP_XmlStartTagEvent * mEvent;
hlipka 0:3fa97f2c0505 31
hlipka 0:3fa97f2c0505 32 SP_XmlStringBuffer * mStartTagName;
hlipka 0:3fa97f2c0505 33
hlipka 0:3fa97f2c0505 34 friend class SP_XmlSTagReader;
hlipka 0:3fa97f2c0505 35
hlipka 0:3fa97f2c0505 36 private:
hlipka 0:3fa97f2c0505 37 SP_XmlSTagReader * mReader;
hlipka 0:3fa97f2c0505 38 char * mError;
hlipka 0:3fa97f2c0505 39 char mEncoding[ 32 ];
hlipka 0:3fa97f2c0505 40 };
hlipka 0:3fa97f2c0505 41
hlipka 0:3fa97f2c0505 42 class SP_XmlSTagReader {
hlipka 0:3fa97f2c0505 43 public:
hlipka 0:3fa97f2c0505 44 SP_XmlSTagReader();
hlipka 0:3fa97f2c0505 45 virtual ~SP_XmlSTagReader();
hlipka 0:3fa97f2c0505 46 virtual void read( SP_XmlSTagParser * parser, char c ) = 0;
hlipka 0:3fa97f2c0505 47
hlipka 0:3fa97f2c0505 48 protected:
hlipka 0:3fa97f2c0505 49
hlipka 0:3fa97f2c0505 50 /// help to call parser->xxx
hlipka 0:3fa97f2c0505 51 void changeReader( SP_XmlSTagParser * parser, SP_XmlSTagReader * reader );
hlipka 0:3fa97f2c0505 52 void setError( SP_XmlSTagParser * parser, const char * error );
hlipka 0:3fa97f2c0505 53
hlipka 0:3fa97f2c0505 54 /// help to call parser->mEvent->xxx
hlipka 0:3fa97f2c0505 55 void setName( SP_XmlSTagParser * parser, const char * name );
hlipka 0:3fa97f2c0505 56 void addAttrName( SP_XmlSTagParser * parser, const char * name );
hlipka 0:3fa97f2c0505 57 void addAttrValue( SP_XmlSTagParser * parser, const char * value );
hlipka 0:3fa97f2c0505 58
hlipka 0:3fa97f2c0505 59 SP_XmlStringBuffer * mBuffer;
hlipka 0:3fa97f2c0505 60 };
hlipka 0:3fa97f2c0505 61
hlipka 0:3fa97f2c0505 62 class SP_XmlSTagNameReader : public SP_XmlSTagReader {
hlipka 0:3fa97f2c0505 63 public:
hlipka 0:3fa97f2c0505 64 SP_XmlSTagNameReader();
hlipka 0:3fa97f2c0505 65 virtual ~SP_XmlSTagNameReader();
hlipka 0:3fa97f2c0505 66 virtual void read( SP_XmlSTagParser * parser, char c );
hlipka 0:3fa97f2c0505 67 };
hlipka 0:3fa97f2c0505 68
hlipka 0:3fa97f2c0505 69 class SP_XmlSTagAttrNameReader : public SP_XmlSTagReader {
hlipka 0:3fa97f2c0505 70 public:
hlipka 0:3fa97f2c0505 71 SP_XmlSTagAttrNameReader();
hlipka 0:3fa97f2c0505 72 virtual ~SP_XmlSTagAttrNameReader();
hlipka 0:3fa97f2c0505 73 virtual void read( SP_XmlSTagParser * parser, char c );
hlipka 0:3fa97f2c0505 74
hlipka 0:3fa97f2c0505 75 private:
hlipka 0:3fa97f2c0505 76 int mWait4Quot;
hlipka 0:3fa97f2c0505 77 };
hlipka 0:3fa97f2c0505 78
hlipka 0:3fa97f2c0505 79 class SP_XmlSTagEqualMarkReader : public SP_XmlSTagReader {
hlipka 0:3fa97f2c0505 80 public:
hlipka 0:3fa97f2c0505 81 SP_XmlSTagEqualMarkReader();
hlipka 0:3fa97f2c0505 82 virtual ~SP_XmlSTagEqualMarkReader();
hlipka 0:3fa97f2c0505 83 virtual void read( SP_XmlSTagParser * parser, char c );
hlipka 0:3fa97f2c0505 84 };
hlipka 0:3fa97f2c0505 85
hlipka 0:3fa97f2c0505 86 class SP_XmlSTagAttrValueReader : public SP_XmlSTagReader {
hlipka 0:3fa97f2c0505 87 public:
hlipka 0:3fa97f2c0505 88 SP_XmlSTagAttrValueReader();
hlipka 0:3fa97f2c0505 89 virtual ~SP_XmlSTagAttrValueReader();
hlipka 0:3fa97f2c0505 90 virtual void read( SP_XmlSTagParser * parser, char c );
hlipka 0:3fa97f2c0505 91
hlipka 0:3fa97f2c0505 92 private:
hlipka 0:3fa97f2c0505 93 int mHasReadQuot;
hlipka 0:3fa97f2c0505 94 };
hlipka 0:3fa97f2c0505 95
hlipka 0:3fa97f2c0505 96 #endif
hlipka 0:3fa97f2c0505 97