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
00001 /* 00002 * Copyright 2007 Stephen Liu 00003 * LGPL, see http://code.google.com/p/spxml/ 00004 * For license terms, see the file COPYING along with this library. 00005 */ 00006 00007 #ifndef __spxmlnode_hpp__ 00008 #define __spxmlnode_hpp__ 00009 00010 class SP_XmlArrayList; 00011 00012 class SP_XmlNode { 00013 public: 00014 enum { eXMLDOC, eDOCDECL, ePI, eDOCTYPE, eELEMENT, eCDATA, eCOMMENT }; 00015 00016 SP_XmlNode( int type ); 00017 virtual ~SP_XmlNode(); 00018 00019 void setParent( SP_XmlNode * parent ); 00020 const SP_XmlNode * getParent() const; 00021 int getType() const; 00022 00023 protected: 00024 SP_XmlNode( SP_XmlNode & ); 00025 SP_XmlNode & operator=( SP_XmlNode & ); 00026 00027 private: 00028 SP_XmlNode * mParent; 00029 const int mType; 00030 }; 00031 00032 class SP_XmlNodeList { 00033 public: 00034 SP_XmlNodeList(); 00035 ~SP_XmlNodeList(); 00036 00037 int getLength() const; 00038 void append( SP_XmlNode * node ); 00039 SP_XmlNode * get( int index ) const; 00040 SP_XmlNode * take( int index ) const; 00041 00042 private: 00043 SP_XmlNodeList( SP_XmlNodeList & ); 00044 SP_XmlNodeList & operator=( SP_XmlNodeList & ); 00045 00046 SP_XmlArrayList * mList; 00047 }; 00048 00049 class SP_XmlPIEvent; 00050 class SP_XmlDocDeclEvent; 00051 class SP_XmlDocTypeEvent; 00052 class SP_XmlStartTagEvent; 00053 class SP_XmlCDataEvent; 00054 class SP_XmlCommentEvent; 00055 00056 class SP_XmlElementNode; 00057 class SP_XmlDocDeclNode; 00058 class SP_XmlDocTypeNode; 00059 00060 class SP_XmlDocument : public SP_XmlNode { 00061 public: 00062 SP_XmlDocument(); 00063 virtual ~SP_XmlDocument(); 00064 00065 void setDocDecl( SP_XmlDocDeclNode * docDecl ); 00066 SP_XmlDocDeclNode * getDocDecl() const; 00067 void setDocType( SP_XmlDocTypeNode * docType ); 00068 SP_XmlDocTypeNode * getDocType() const; 00069 void setRootElement( SP_XmlElementNode * rootElement ); 00070 SP_XmlElementNode * getRootElement() const; 00071 SP_XmlNodeList * getChildren() const; 00072 00073 private: 00074 SP_XmlDocDeclNode * mDocDecl; 00075 SP_XmlDocTypeNode * mDocType; 00076 SP_XmlNodeList * mChildren; 00077 }; 00078 00079 class SP_XmlPINode : public SP_XmlNode { 00080 public: 00081 SP_XmlPINode(); 00082 SP_XmlPINode( SP_XmlPIEvent * event ); 00083 virtual ~SP_XmlPINode(); 00084 00085 void setTarget( const char * target ); 00086 const char * getTarget(); 00087 00088 void setData( const char * data ); 00089 const char * getData(); 00090 00091 private: 00092 SP_XmlPIEvent * mEvent; 00093 }; 00094 00095 class SP_XmlDocDeclNode : public SP_XmlNode { 00096 public: 00097 SP_XmlDocDeclNode(); 00098 SP_XmlDocDeclNode( SP_XmlDocDeclEvent * event ); 00099 virtual ~SP_XmlDocDeclNode(); 00100 00101 void setVersion( const char * version ); 00102 const char * getVersion() const; 00103 void setEncoding( const char * encoding ); 00104 const char * getEncoding() const; 00105 void setStandalone( int standalone ); 00106 int getStandalone() const; 00107 00108 private: 00109 SP_XmlDocDeclEvent * mEvent; 00110 }; 00111 00112 class SP_XmlDocTypeNode : public SP_XmlNode { 00113 public: 00114 SP_XmlDocTypeNode(); 00115 SP_XmlDocTypeNode( SP_XmlDocTypeEvent * event ); 00116 virtual ~SP_XmlDocTypeNode(); 00117 00118 void setName( const char * name ); 00119 const char * getName() const; 00120 void setSystemID( const char * systemID ); 00121 const char * getSystemID() const; 00122 void setPublicID( const char * publicID ); 00123 const char * getPublicID() const; 00124 void setDTD( const char * dtd ); 00125 const char * getDTD() const; 00126 00127 private: 00128 SP_XmlDocTypeEvent * mEvent; 00129 }; 00130 00131 class SP_XmlElementNode : public SP_XmlNode { 00132 public: 00133 SP_XmlElementNode(); 00134 SP_XmlElementNode( SP_XmlStartTagEvent * event ); 00135 virtual ~SP_XmlElementNode(); 00136 00137 void setName( const char * name ); 00138 const char * getName() const; 00139 void addChild( SP_XmlNode * node ); 00140 const SP_XmlNodeList * getChildren() const; 00141 00142 void addAttr( const char * name, const char * value ); 00143 const char * getAttrValue( const char * name ) const; 00144 int getAttrCount() const; 00145 const char * getAttr( int index, const char ** value ) const; 00146 00147 void removeAttr( const char * name ); 00148 00149 protected: 00150 SP_XmlStartTagEvent * mEvent; 00151 SP_XmlNodeList * mChildren; 00152 }; 00153 00154 class SP_XmlCDataNode : public SP_XmlNode { 00155 public: 00156 SP_XmlCDataNode(); 00157 SP_XmlCDataNode( SP_XmlCDataEvent * event ); 00158 virtual ~SP_XmlCDataNode(); 00159 00160 void setText( const char * content ); 00161 const char * getText() const; 00162 00163 protected: 00164 SP_XmlCDataEvent * mEvent; 00165 }; 00166 00167 class SP_XmlCommentNode : public SP_XmlNode { 00168 public: 00169 SP_XmlCommentNode(); 00170 SP_XmlCommentNode( SP_XmlCommentEvent * event ); 00171 virtual ~SP_XmlCommentNode(); 00172 00173 void setText( const char * comment ); 00174 const char * getText() const; 00175 00176 protected: 00177 SP_XmlCommentEvent * mEvent; 00178 }; 00179 00180 #endif 00181
Generated on Sun Jul 17 2022 09:10:11 by 1.7.2