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
spxmlnode.hpp@0:3fa97f2c0505, 2010-11-24 (annotated)
- Committer:
- hlipka
- Date:
- Wed Nov 24 20:52:14 2010 +0000
- Revision:
- 0:3fa97f2c0505
initial revision
Who changed what in which revision?
User | Revision | Line number | New 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 __spxmlnode_hpp__ |
hlipka | 0:3fa97f2c0505 | 8 | #define __spxmlnode_hpp__ |
hlipka | 0:3fa97f2c0505 | 9 | |
hlipka | 0:3fa97f2c0505 | 10 | class SP_XmlArrayList; |
hlipka | 0:3fa97f2c0505 | 11 | |
hlipka | 0:3fa97f2c0505 | 12 | class SP_XmlNode { |
hlipka | 0:3fa97f2c0505 | 13 | public: |
hlipka | 0:3fa97f2c0505 | 14 | enum { eXMLDOC, eDOCDECL, ePI, eDOCTYPE, eELEMENT, eCDATA, eCOMMENT }; |
hlipka | 0:3fa97f2c0505 | 15 | |
hlipka | 0:3fa97f2c0505 | 16 | SP_XmlNode( int type ); |
hlipka | 0:3fa97f2c0505 | 17 | virtual ~SP_XmlNode(); |
hlipka | 0:3fa97f2c0505 | 18 | |
hlipka | 0:3fa97f2c0505 | 19 | void setParent( SP_XmlNode * parent ); |
hlipka | 0:3fa97f2c0505 | 20 | const SP_XmlNode * getParent() const; |
hlipka | 0:3fa97f2c0505 | 21 | int getType() const; |
hlipka | 0:3fa97f2c0505 | 22 | |
hlipka | 0:3fa97f2c0505 | 23 | protected: |
hlipka | 0:3fa97f2c0505 | 24 | SP_XmlNode( SP_XmlNode & ); |
hlipka | 0:3fa97f2c0505 | 25 | SP_XmlNode & operator=( SP_XmlNode & ); |
hlipka | 0:3fa97f2c0505 | 26 | |
hlipka | 0:3fa97f2c0505 | 27 | private: |
hlipka | 0:3fa97f2c0505 | 28 | SP_XmlNode * mParent; |
hlipka | 0:3fa97f2c0505 | 29 | const int mType; |
hlipka | 0:3fa97f2c0505 | 30 | }; |
hlipka | 0:3fa97f2c0505 | 31 | |
hlipka | 0:3fa97f2c0505 | 32 | class SP_XmlNodeList { |
hlipka | 0:3fa97f2c0505 | 33 | public: |
hlipka | 0:3fa97f2c0505 | 34 | SP_XmlNodeList(); |
hlipka | 0:3fa97f2c0505 | 35 | ~SP_XmlNodeList(); |
hlipka | 0:3fa97f2c0505 | 36 | |
hlipka | 0:3fa97f2c0505 | 37 | int getLength() const; |
hlipka | 0:3fa97f2c0505 | 38 | void append( SP_XmlNode * node ); |
hlipka | 0:3fa97f2c0505 | 39 | SP_XmlNode * get( int index ) const; |
hlipka | 0:3fa97f2c0505 | 40 | SP_XmlNode * take( int index ) const; |
hlipka | 0:3fa97f2c0505 | 41 | |
hlipka | 0:3fa97f2c0505 | 42 | private: |
hlipka | 0:3fa97f2c0505 | 43 | SP_XmlNodeList( SP_XmlNodeList & ); |
hlipka | 0:3fa97f2c0505 | 44 | SP_XmlNodeList & operator=( SP_XmlNodeList & ); |
hlipka | 0:3fa97f2c0505 | 45 | |
hlipka | 0:3fa97f2c0505 | 46 | SP_XmlArrayList * mList; |
hlipka | 0:3fa97f2c0505 | 47 | }; |
hlipka | 0:3fa97f2c0505 | 48 | |
hlipka | 0:3fa97f2c0505 | 49 | class SP_XmlPIEvent; |
hlipka | 0:3fa97f2c0505 | 50 | class SP_XmlDocDeclEvent; |
hlipka | 0:3fa97f2c0505 | 51 | class SP_XmlDocTypeEvent; |
hlipka | 0:3fa97f2c0505 | 52 | class SP_XmlStartTagEvent; |
hlipka | 0:3fa97f2c0505 | 53 | class SP_XmlCDataEvent; |
hlipka | 0:3fa97f2c0505 | 54 | class SP_XmlCommentEvent; |
hlipka | 0:3fa97f2c0505 | 55 | |
hlipka | 0:3fa97f2c0505 | 56 | class SP_XmlElementNode; |
hlipka | 0:3fa97f2c0505 | 57 | class SP_XmlDocDeclNode; |
hlipka | 0:3fa97f2c0505 | 58 | class SP_XmlDocTypeNode; |
hlipka | 0:3fa97f2c0505 | 59 | |
hlipka | 0:3fa97f2c0505 | 60 | class SP_XmlDocument : public SP_XmlNode { |
hlipka | 0:3fa97f2c0505 | 61 | public: |
hlipka | 0:3fa97f2c0505 | 62 | SP_XmlDocument(); |
hlipka | 0:3fa97f2c0505 | 63 | virtual ~SP_XmlDocument(); |
hlipka | 0:3fa97f2c0505 | 64 | |
hlipka | 0:3fa97f2c0505 | 65 | void setDocDecl( SP_XmlDocDeclNode * docDecl ); |
hlipka | 0:3fa97f2c0505 | 66 | SP_XmlDocDeclNode * getDocDecl() const; |
hlipka | 0:3fa97f2c0505 | 67 | void setDocType( SP_XmlDocTypeNode * docType ); |
hlipka | 0:3fa97f2c0505 | 68 | SP_XmlDocTypeNode * getDocType() const; |
hlipka | 0:3fa97f2c0505 | 69 | void setRootElement( SP_XmlElementNode * rootElement ); |
hlipka | 0:3fa97f2c0505 | 70 | SP_XmlElementNode * getRootElement() const; |
hlipka | 0:3fa97f2c0505 | 71 | SP_XmlNodeList * getChildren() const; |
hlipka | 0:3fa97f2c0505 | 72 | |
hlipka | 0:3fa97f2c0505 | 73 | private: |
hlipka | 0:3fa97f2c0505 | 74 | SP_XmlDocDeclNode * mDocDecl; |
hlipka | 0:3fa97f2c0505 | 75 | SP_XmlDocTypeNode * mDocType; |
hlipka | 0:3fa97f2c0505 | 76 | SP_XmlNodeList * mChildren; |
hlipka | 0:3fa97f2c0505 | 77 | }; |
hlipka | 0:3fa97f2c0505 | 78 | |
hlipka | 0:3fa97f2c0505 | 79 | class SP_XmlPINode : public SP_XmlNode { |
hlipka | 0:3fa97f2c0505 | 80 | public: |
hlipka | 0:3fa97f2c0505 | 81 | SP_XmlPINode(); |
hlipka | 0:3fa97f2c0505 | 82 | SP_XmlPINode( SP_XmlPIEvent * event ); |
hlipka | 0:3fa97f2c0505 | 83 | virtual ~SP_XmlPINode(); |
hlipka | 0:3fa97f2c0505 | 84 | |
hlipka | 0:3fa97f2c0505 | 85 | void setTarget( const char * target ); |
hlipka | 0:3fa97f2c0505 | 86 | const char * getTarget(); |
hlipka | 0:3fa97f2c0505 | 87 | |
hlipka | 0:3fa97f2c0505 | 88 | void setData( const char * data ); |
hlipka | 0:3fa97f2c0505 | 89 | const char * getData(); |
hlipka | 0:3fa97f2c0505 | 90 | |
hlipka | 0:3fa97f2c0505 | 91 | private: |
hlipka | 0:3fa97f2c0505 | 92 | SP_XmlPIEvent * mEvent; |
hlipka | 0:3fa97f2c0505 | 93 | }; |
hlipka | 0:3fa97f2c0505 | 94 | |
hlipka | 0:3fa97f2c0505 | 95 | class SP_XmlDocDeclNode : public SP_XmlNode { |
hlipka | 0:3fa97f2c0505 | 96 | public: |
hlipka | 0:3fa97f2c0505 | 97 | SP_XmlDocDeclNode(); |
hlipka | 0:3fa97f2c0505 | 98 | SP_XmlDocDeclNode( SP_XmlDocDeclEvent * event ); |
hlipka | 0:3fa97f2c0505 | 99 | virtual ~SP_XmlDocDeclNode(); |
hlipka | 0:3fa97f2c0505 | 100 | |
hlipka | 0:3fa97f2c0505 | 101 | void setVersion( const char * version ); |
hlipka | 0:3fa97f2c0505 | 102 | const char * getVersion() const; |
hlipka | 0:3fa97f2c0505 | 103 | void setEncoding( const char * encoding ); |
hlipka | 0:3fa97f2c0505 | 104 | const char * getEncoding() const; |
hlipka | 0:3fa97f2c0505 | 105 | void setStandalone( int standalone ); |
hlipka | 0:3fa97f2c0505 | 106 | int getStandalone() const; |
hlipka | 0:3fa97f2c0505 | 107 | |
hlipka | 0:3fa97f2c0505 | 108 | private: |
hlipka | 0:3fa97f2c0505 | 109 | SP_XmlDocDeclEvent * mEvent; |
hlipka | 0:3fa97f2c0505 | 110 | }; |
hlipka | 0:3fa97f2c0505 | 111 | |
hlipka | 0:3fa97f2c0505 | 112 | class SP_XmlDocTypeNode : public SP_XmlNode { |
hlipka | 0:3fa97f2c0505 | 113 | public: |
hlipka | 0:3fa97f2c0505 | 114 | SP_XmlDocTypeNode(); |
hlipka | 0:3fa97f2c0505 | 115 | SP_XmlDocTypeNode( SP_XmlDocTypeEvent * event ); |
hlipka | 0:3fa97f2c0505 | 116 | virtual ~SP_XmlDocTypeNode(); |
hlipka | 0:3fa97f2c0505 | 117 | |
hlipka | 0:3fa97f2c0505 | 118 | void setName( const char * name ); |
hlipka | 0:3fa97f2c0505 | 119 | const char * getName() const; |
hlipka | 0:3fa97f2c0505 | 120 | void setSystemID( const char * systemID ); |
hlipka | 0:3fa97f2c0505 | 121 | const char * getSystemID() const; |
hlipka | 0:3fa97f2c0505 | 122 | void setPublicID( const char * publicID ); |
hlipka | 0:3fa97f2c0505 | 123 | const char * getPublicID() const; |
hlipka | 0:3fa97f2c0505 | 124 | void setDTD( const char * dtd ); |
hlipka | 0:3fa97f2c0505 | 125 | const char * getDTD() const; |
hlipka | 0:3fa97f2c0505 | 126 | |
hlipka | 0:3fa97f2c0505 | 127 | private: |
hlipka | 0:3fa97f2c0505 | 128 | SP_XmlDocTypeEvent * mEvent; |
hlipka | 0:3fa97f2c0505 | 129 | }; |
hlipka | 0:3fa97f2c0505 | 130 | |
hlipka | 0:3fa97f2c0505 | 131 | class SP_XmlElementNode : public SP_XmlNode { |
hlipka | 0:3fa97f2c0505 | 132 | public: |
hlipka | 0:3fa97f2c0505 | 133 | SP_XmlElementNode(); |
hlipka | 0:3fa97f2c0505 | 134 | SP_XmlElementNode( SP_XmlStartTagEvent * event ); |
hlipka | 0:3fa97f2c0505 | 135 | virtual ~SP_XmlElementNode(); |
hlipka | 0:3fa97f2c0505 | 136 | |
hlipka | 0:3fa97f2c0505 | 137 | void setName( const char * name ); |
hlipka | 0:3fa97f2c0505 | 138 | const char * getName() const; |
hlipka | 0:3fa97f2c0505 | 139 | void addChild( SP_XmlNode * node ); |
hlipka | 0:3fa97f2c0505 | 140 | const SP_XmlNodeList * getChildren() const; |
hlipka | 0:3fa97f2c0505 | 141 | |
hlipka | 0:3fa97f2c0505 | 142 | void addAttr( const char * name, const char * value ); |
hlipka | 0:3fa97f2c0505 | 143 | const char * getAttrValue( const char * name ) const; |
hlipka | 0:3fa97f2c0505 | 144 | int getAttrCount() const; |
hlipka | 0:3fa97f2c0505 | 145 | const char * getAttr( int index, const char ** value ) const; |
hlipka | 0:3fa97f2c0505 | 146 | |
hlipka | 0:3fa97f2c0505 | 147 | void removeAttr( const char * name ); |
hlipka | 0:3fa97f2c0505 | 148 | |
hlipka | 0:3fa97f2c0505 | 149 | protected: |
hlipka | 0:3fa97f2c0505 | 150 | SP_XmlStartTagEvent * mEvent; |
hlipka | 0:3fa97f2c0505 | 151 | SP_XmlNodeList * mChildren; |
hlipka | 0:3fa97f2c0505 | 152 | }; |
hlipka | 0:3fa97f2c0505 | 153 | |
hlipka | 0:3fa97f2c0505 | 154 | class SP_XmlCDataNode : public SP_XmlNode { |
hlipka | 0:3fa97f2c0505 | 155 | public: |
hlipka | 0:3fa97f2c0505 | 156 | SP_XmlCDataNode(); |
hlipka | 0:3fa97f2c0505 | 157 | SP_XmlCDataNode( SP_XmlCDataEvent * event ); |
hlipka | 0:3fa97f2c0505 | 158 | virtual ~SP_XmlCDataNode(); |
hlipka | 0:3fa97f2c0505 | 159 | |
hlipka | 0:3fa97f2c0505 | 160 | void setText( const char * content ); |
hlipka | 0:3fa97f2c0505 | 161 | const char * getText() const; |
hlipka | 0:3fa97f2c0505 | 162 | |
hlipka | 0:3fa97f2c0505 | 163 | protected: |
hlipka | 0:3fa97f2c0505 | 164 | SP_XmlCDataEvent * mEvent; |
hlipka | 0:3fa97f2c0505 | 165 | }; |
hlipka | 0:3fa97f2c0505 | 166 | |
hlipka | 0:3fa97f2c0505 | 167 | class SP_XmlCommentNode : public SP_XmlNode { |
hlipka | 0:3fa97f2c0505 | 168 | public: |
hlipka | 0:3fa97f2c0505 | 169 | SP_XmlCommentNode(); |
hlipka | 0:3fa97f2c0505 | 170 | SP_XmlCommentNode( SP_XmlCommentEvent * event ); |
hlipka | 0:3fa97f2c0505 | 171 | virtual ~SP_XmlCommentNode(); |
hlipka | 0:3fa97f2c0505 | 172 | |
hlipka | 0:3fa97f2c0505 | 173 | void setText( const char * comment ); |
hlipka | 0:3fa97f2c0505 | 174 | const char * getText() const; |
hlipka | 0:3fa97f2c0505 | 175 | |
hlipka | 0:3fa97f2c0505 | 176 | protected: |
hlipka | 0:3fa97f2c0505 | 177 | SP_XmlCommentEvent * mEvent; |
hlipka | 0:3fa97f2c0505 | 178 | }; |
hlipka | 0:3fa97f2c0505 | 179 | |
hlipka | 0:3fa97f2c0505 | 180 | #endif |
hlipka | 0:3fa97f2c0505 | 181 |