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 #include <string.h>
hlipka 0:3fa97f2c0505 8 #include <stdlib.h>
hlipka 0:3fa97f2c0505 9
hlipka 0:3fa97f2c0505 10 #include "spxmlnode.hpp"
hlipka 0:3fa97f2c0505 11 #include "spxmlutils.hpp"
hlipka 0:3fa97f2c0505 12 #include "spxmlevent.hpp"
hlipka 0:3fa97f2c0505 13
hlipka 0:3fa97f2c0505 14 //=========================================================
hlipka 0:3fa97f2c0505 15
hlipka 0:3fa97f2c0505 16 SP_XmlNode :: SP_XmlNode( int type )
hlipka 0:3fa97f2c0505 17 : mType( type )
hlipka 0:3fa97f2c0505 18 {
hlipka 0:3fa97f2c0505 19 mParent = NULL;
hlipka 0:3fa97f2c0505 20 }
hlipka 0:3fa97f2c0505 21
hlipka 0:3fa97f2c0505 22 SP_XmlNode :: ~SP_XmlNode()
hlipka 0:3fa97f2c0505 23 {
hlipka 0:3fa97f2c0505 24 mParent = NULL;
hlipka 0:3fa97f2c0505 25 }
hlipka 0:3fa97f2c0505 26
hlipka 0:3fa97f2c0505 27 void SP_XmlNode :: setParent( SP_XmlNode * parent )
hlipka 0:3fa97f2c0505 28 {
hlipka 0:3fa97f2c0505 29 mParent = parent;
hlipka 0:3fa97f2c0505 30 }
hlipka 0:3fa97f2c0505 31
hlipka 0:3fa97f2c0505 32 const SP_XmlNode * SP_XmlNode :: getParent() const
hlipka 0:3fa97f2c0505 33 {
hlipka 0:3fa97f2c0505 34 return mParent;
hlipka 0:3fa97f2c0505 35 }
hlipka 0:3fa97f2c0505 36
hlipka 0:3fa97f2c0505 37 int SP_XmlNode :: getType() const
hlipka 0:3fa97f2c0505 38 {
hlipka 0:3fa97f2c0505 39 return mType;
hlipka 0:3fa97f2c0505 40 }
hlipka 0:3fa97f2c0505 41
hlipka 0:3fa97f2c0505 42 //=========================================================
hlipka 0:3fa97f2c0505 43
hlipka 0:3fa97f2c0505 44 SP_XmlNodeList :: SP_XmlNodeList()
hlipka 0:3fa97f2c0505 45 {
hlipka 0:3fa97f2c0505 46 mList = new SP_XmlArrayList();
hlipka 0:3fa97f2c0505 47 }
hlipka 0:3fa97f2c0505 48
hlipka 0:3fa97f2c0505 49 SP_XmlNodeList :: ~SP_XmlNodeList()
hlipka 0:3fa97f2c0505 50 {
hlipka 0:3fa97f2c0505 51 for( int i = 0; i < mList->getCount(); i++ ) {
hlipka 0:3fa97f2c0505 52 SP_XmlNode * node = (SP_XmlNode*)mList->getItem( i );
hlipka 0:3fa97f2c0505 53 delete node;
hlipka 0:3fa97f2c0505 54 }
hlipka 0:3fa97f2c0505 55
hlipka 0:3fa97f2c0505 56 delete mList;
hlipka 0:3fa97f2c0505 57
hlipka 0:3fa97f2c0505 58 mList = NULL;
hlipka 0:3fa97f2c0505 59 }
hlipka 0:3fa97f2c0505 60
hlipka 0:3fa97f2c0505 61 int SP_XmlNodeList :: getLength() const
hlipka 0:3fa97f2c0505 62 {
hlipka 0:3fa97f2c0505 63 return mList->getCount();
hlipka 0:3fa97f2c0505 64 }
hlipka 0:3fa97f2c0505 65
hlipka 0:3fa97f2c0505 66 void SP_XmlNodeList :: append( SP_XmlNode * node )
hlipka 0:3fa97f2c0505 67 {
hlipka 0:3fa97f2c0505 68 mList->append( node );
hlipka 0:3fa97f2c0505 69 }
hlipka 0:3fa97f2c0505 70
hlipka 0:3fa97f2c0505 71 SP_XmlNode * SP_XmlNodeList :: get( int index ) const
hlipka 0:3fa97f2c0505 72 {
hlipka 0:3fa97f2c0505 73 return (SP_XmlNode*)mList->getItem( index );
hlipka 0:3fa97f2c0505 74 }
hlipka 0:3fa97f2c0505 75
hlipka 0:3fa97f2c0505 76 SP_XmlNode * SP_XmlNodeList :: take( int index ) const
hlipka 0:3fa97f2c0505 77 {
hlipka 0:3fa97f2c0505 78 return (SP_XmlNode*)mList->takeItem( index );
hlipka 0:3fa97f2c0505 79 }
hlipka 0:3fa97f2c0505 80
hlipka 0:3fa97f2c0505 81 //=========================================================
hlipka 0:3fa97f2c0505 82
hlipka 0:3fa97f2c0505 83 SP_XmlDocument :: SP_XmlDocument()
hlipka 0:3fa97f2c0505 84 : SP_XmlNode( eXMLDOC )
hlipka 0:3fa97f2c0505 85 {
hlipka 0:3fa97f2c0505 86 mDocDecl = NULL;
hlipka 0:3fa97f2c0505 87 mDocType = NULL;
hlipka 0:3fa97f2c0505 88 mChildren = new SP_XmlNodeList();
hlipka 0:3fa97f2c0505 89 }
hlipka 0:3fa97f2c0505 90
hlipka 0:3fa97f2c0505 91 SP_XmlDocument :: ~SP_XmlDocument()
hlipka 0:3fa97f2c0505 92 {
hlipka 0:3fa97f2c0505 93 if( NULL != mDocDecl ) delete mDocDecl;
hlipka 0:3fa97f2c0505 94 mDocDecl = NULL;
hlipka 0:3fa97f2c0505 95
hlipka 0:3fa97f2c0505 96 if( NULL != mDocType ) delete mDocType;
hlipka 0:3fa97f2c0505 97 mDocType = NULL;
hlipka 0:3fa97f2c0505 98
hlipka 0:3fa97f2c0505 99 if( NULL != mChildren ) delete mChildren;
hlipka 0:3fa97f2c0505 100 mChildren = NULL;
hlipka 0:3fa97f2c0505 101 }
hlipka 0:3fa97f2c0505 102
hlipka 0:3fa97f2c0505 103 void SP_XmlDocument :: setDocDecl( SP_XmlDocDeclNode * docDecl )
hlipka 0:3fa97f2c0505 104 {
hlipka 0:3fa97f2c0505 105 if( NULL != mDocDecl ) delete mDocDecl;
hlipka 0:3fa97f2c0505 106 docDecl->setParent( this );
hlipka 0:3fa97f2c0505 107 mDocDecl = docDecl;
hlipka 0:3fa97f2c0505 108 }
hlipka 0:3fa97f2c0505 109
hlipka 0:3fa97f2c0505 110 SP_XmlDocDeclNode * SP_XmlDocument :: getDocDecl() const
hlipka 0:3fa97f2c0505 111 {
hlipka 0:3fa97f2c0505 112 return mDocDecl;
hlipka 0:3fa97f2c0505 113 }
hlipka 0:3fa97f2c0505 114
hlipka 0:3fa97f2c0505 115 void SP_XmlDocument :: setDocType( SP_XmlDocTypeNode * docType )
hlipka 0:3fa97f2c0505 116 {
hlipka 0:3fa97f2c0505 117 if( NULL != mDocType ) delete mDocType;
hlipka 0:3fa97f2c0505 118 docType->setParent( this );
hlipka 0:3fa97f2c0505 119 mDocType = docType;
hlipka 0:3fa97f2c0505 120 }
hlipka 0:3fa97f2c0505 121
hlipka 0:3fa97f2c0505 122 SP_XmlDocTypeNode * SP_XmlDocument :: getDocType() const
hlipka 0:3fa97f2c0505 123 {
hlipka 0:3fa97f2c0505 124 return mDocType;
hlipka 0:3fa97f2c0505 125 }
hlipka 0:3fa97f2c0505 126
hlipka 0:3fa97f2c0505 127 void SP_XmlDocument :: setRootElement( SP_XmlElementNode * rootElement )
hlipka 0:3fa97f2c0505 128 {
hlipka 0:3fa97f2c0505 129 int index = -1;
hlipka 0:3fa97f2c0505 130 for( int i = 0; i < mChildren->getLength(); i++ ) {
hlipka 0:3fa97f2c0505 131 const SP_XmlNode * node = mChildren->get( i );
hlipka 0:3fa97f2c0505 132
hlipka 0:3fa97f2c0505 133 if( SP_XmlNode::eELEMENT == node->getType() ) {
hlipka 0:3fa97f2c0505 134 index = i;
hlipka 0:3fa97f2c0505 135 break;
hlipka 0:3fa97f2c0505 136 }
hlipka 0:3fa97f2c0505 137 }
hlipka 0:3fa97f2c0505 138
hlipka 0:3fa97f2c0505 139 if( index >= 0 ) {
hlipka 0:3fa97f2c0505 140 SP_XmlNode * node = mChildren->take( index );
hlipka 0:3fa97f2c0505 141 delete node;
hlipka 0:3fa97f2c0505 142 }
hlipka 0:3fa97f2c0505 143
hlipka 0:3fa97f2c0505 144 mChildren->append( rootElement );
hlipka 0:3fa97f2c0505 145 rootElement->setParent( this );
hlipka 0:3fa97f2c0505 146 }
hlipka 0:3fa97f2c0505 147
hlipka 0:3fa97f2c0505 148 SP_XmlElementNode * SP_XmlDocument :: getRootElement() const
hlipka 0:3fa97f2c0505 149 {
hlipka 0:3fa97f2c0505 150 SP_XmlElementNode * ret = NULL;
hlipka 0:3fa97f2c0505 151
hlipka 0:3fa97f2c0505 152 for( int i = 0; i < mChildren->getLength(); i++ ) {
hlipka 0:3fa97f2c0505 153 const SP_XmlNode * node = mChildren->get( i );
hlipka 0:3fa97f2c0505 154
hlipka 0:3fa97f2c0505 155 if( SP_XmlNode::eELEMENT == node->getType() ) {
hlipka 0:3fa97f2c0505 156 ret = (SP_XmlElementNode*)node;
hlipka 0:3fa97f2c0505 157 break;
hlipka 0:3fa97f2c0505 158 }
hlipka 0:3fa97f2c0505 159 }
hlipka 0:3fa97f2c0505 160
hlipka 0:3fa97f2c0505 161 return ret;
hlipka 0:3fa97f2c0505 162 }
hlipka 0:3fa97f2c0505 163
hlipka 0:3fa97f2c0505 164 SP_XmlNodeList * SP_XmlDocument :: getChildren() const
hlipka 0:3fa97f2c0505 165 {
hlipka 0:3fa97f2c0505 166 return mChildren;
hlipka 0:3fa97f2c0505 167 }
hlipka 0:3fa97f2c0505 168
hlipka 0:3fa97f2c0505 169 //=========================================================
hlipka 0:3fa97f2c0505 170
hlipka 0:3fa97f2c0505 171 SP_XmlPINode :: SP_XmlPINode()
hlipka 0:3fa97f2c0505 172 : SP_XmlNode( ePI )
hlipka 0:3fa97f2c0505 173 {
hlipka 0:3fa97f2c0505 174 mEvent = new SP_XmlPIEvent();
hlipka 0:3fa97f2c0505 175 }
hlipka 0:3fa97f2c0505 176
hlipka 0:3fa97f2c0505 177 SP_XmlPINode :: SP_XmlPINode( SP_XmlPIEvent * event )
hlipka 0:3fa97f2c0505 178 : SP_XmlNode( ePI )
hlipka 0:3fa97f2c0505 179 {
hlipka 0:3fa97f2c0505 180 mEvent = event;
hlipka 0:3fa97f2c0505 181 }
hlipka 0:3fa97f2c0505 182
hlipka 0:3fa97f2c0505 183 SP_XmlPINode :: ~SP_XmlPINode()
hlipka 0:3fa97f2c0505 184 {
hlipka 0:3fa97f2c0505 185 if( NULL != mEvent ) delete mEvent;
hlipka 0:3fa97f2c0505 186 mEvent = NULL;
hlipka 0:3fa97f2c0505 187 }
hlipka 0:3fa97f2c0505 188
hlipka 0:3fa97f2c0505 189 void SP_XmlPINode :: setTarget( const char * target )
hlipka 0:3fa97f2c0505 190 {
hlipka 0:3fa97f2c0505 191 mEvent->setTarget( target );
hlipka 0:3fa97f2c0505 192 }
hlipka 0:3fa97f2c0505 193
hlipka 0:3fa97f2c0505 194 const char * SP_XmlPINode :: getTarget()
hlipka 0:3fa97f2c0505 195 {
hlipka 0:3fa97f2c0505 196 return mEvent->getTarget();
hlipka 0:3fa97f2c0505 197 }
hlipka 0:3fa97f2c0505 198
hlipka 0:3fa97f2c0505 199 void SP_XmlPINode :: setData( const char * data )
hlipka 0:3fa97f2c0505 200 {
hlipka 0:3fa97f2c0505 201 mEvent->setData( data, strlen( data ) );
hlipka 0:3fa97f2c0505 202 }
hlipka 0:3fa97f2c0505 203
hlipka 0:3fa97f2c0505 204 const char * SP_XmlPINode :: getData()
hlipka 0:3fa97f2c0505 205 {
hlipka 0:3fa97f2c0505 206 return mEvent->getData();
hlipka 0:3fa97f2c0505 207 }
hlipka 0:3fa97f2c0505 208
hlipka 0:3fa97f2c0505 209 //=========================================================
hlipka 0:3fa97f2c0505 210
hlipka 0:3fa97f2c0505 211 SP_XmlDocDeclNode :: SP_XmlDocDeclNode()
hlipka 0:3fa97f2c0505 212 : SP_XmlNode( eDOCDECL )
hlipka 0:3fa97f2c0505 213 {
hlipka 0:3fa97f2c0505 214 mEvent = new SP_XmlDocDeclEvent();
hlipka 0:3fa97f2c0505 215 }
hlipka 0:3fa97f2c0505 216
hlipka 0:3fa97f2c0505 217 SP_XmlDocDeclNode :: SP_XmlDocDeclNode( SP_XmlDocDeclEvent * event )
hlipka 0:3fa97f2c0505 218 : SP_XmlNode( eDOCDECL )
hlipka 0:3fa97f2c0505 219 {
hlipka 0:3fa97f2c0505 220 mEvent = event;
hlipka 0:3fa97f2c0505 221 }
hlipka 0:3fa97f2c0505 222
hlipka 0:3fa97f2c0505 223 SP_XmlDocDeclNode :: ~SP_XmlDocDeclNode()
hlipka 0:3fa97f2c0505 224 {
hlipka 0:3fa97f2c0505 225 if( NULL != mEvent ) delete mEvent;
hlipka 0:3fa97f2c0505 226 mEvent = NULL;
hlipka 0:3fa97f2c0505 227 }
hlipka 0:3fa97f2c0505 228
hlipka 0:3fa97f2c0505 229 void SP_XmlDocDeclNode :: setVersion( const char * version )
hlipka 0:3fa97f2c0505 230 {
hlipka 0:3fa97f2c0505 231 mEvent->setVersion( version );
hlipka 0:3fa97f2c0505 232 }
hlipka 0:3fa97f2c0505 233
hlipka 0:3fa97f2c0505 234 const char * SP_XmlDocDeclNode :: getVersion() const
hlipka 0:3fa97f2c0505 235 {
hlipka 0:3fa97f2c0505 236 return mEvent->getVersion();
hlipka 0:3fa97f2c0505 237 }
hlipka 0:3fa97f2c0505 238
hlipka 0:3fa97f2c0505 239 void SP_XmlDocDeclNode :: setEncoding( const char * encoding )
hlipka 0:3fa97f2c0505 240 {
hlipka 0:3fa97f2c0505 241 mEvent->setEncoding( encoding );
hlipka 0:3fa97f2c0505 242 }
hlipka 0:3fa97f2c0505 243
hlipka 0:3fa97f2c0505 244 const char * SP_XmlDocDeclNode :: getEncoding() const
hlipka 0:3fa97f2c0505 245 {
hlipka 0:3fa97f2c0505 246 return mEvent->getEncoding();
hlipka 0:3fa97f2c0505 247 }
hlipka 0:3fa97f2c0505 248
hlipka 0:3fa97f2c0505 249 void SP_XmlDocDeclNode :: setStandalone( int standalone )
hlipka 0:3fa97f2c0505 250 {
hlipka 0:3fa97f2c0505 251 mEvent->setStandalone( standalone );
hlipka 0:3fa97f2c0505 252 }
hlipka 0:3fa97f2c0505 253
hlipka 0:3fa97f2c0505 254 int SP_XmlDocDeclNode :: getStandalone() const
hlipka 0:3fa97f2c0505 255 {
hlipka 0:3fa97f2c0505 256 return mEvent->getStandalone();
hlipka 0:3fa97f2c0505 257 }
hlipka 0:3fa97f2c0505 258
hlipka 0:3fa97f2c0505 259 //=========================================================
hlipka 0:3fa97f2c0505 260
hlipka 0:3fa97f2c0505 261 SP_XmlDocTypeNode :: SP_XmlDocTypeNode()
hlipka 0:3fa97f2c0505 262 : SP_XmlNode( eDOCTYPE )
hlipka 0:3fa97f2c0505 263 {
hlipka 0:3fa97f2c0505 264 mEvent = new SP_XmlDocTypeEvent();
hlipka 0:3fa97f2c0505 265 }
hlipka 0:3fa97f2c0505 266
hlipka 0:3fa97f2c0505 267 SP_XmlDocTypeNode :: SP_XmlDocTypeNode( SP_XmlDocTypeEvent * event )
hlipka 0:3fa97f2c0505 268 : SP_XmlNode( eDOCTYPE )
hlipka 0:3fa97f2c0505 269 {
hlipka 0:3fa97f2c0505 270 mEvent = event;
hlipka 0:3fa97f2c0505 271 }
hlipka 0:3fa97f2c0505 272
hlipka 0:3fa97f2c0505 273 SP_XmlDocTypeNode :: ~SP_XmlDocTypeNode()
hlipka 0:3fa97f2c0505 274 {
hlipka 0:3fa97f2c0505 275 if( NULL != mEvent ) delete mEvent;
hlipka 0:3fa97f2c0505 276 mEvent = NULL;
hlipka 0:3fa97f2c0505 277 }
hlipka 0:3fa97f2c0505 278
hlipka 0:3fa97f2c0505 279 void SP_XmlDocTypeNode :: setName( const char * name )
hlipka 0:3fa97f2c0505 280 {
hlipka 0:3fa97f2c0505 281 mEvent->setName( name );
hlipka 0:3fa97f2c0505 282 }
hlipka 0:3fa97f2c0505 283
hlipka 0:3fa97f2c0505 284 const char * SP_XmlDocTypeNode :: getName() const
hlipka 0:3fa97f2c0505 285 {
hlipka 0:3fa97f2c0505 286 return mEvent->getName();
hlipka 0:3fa97f2c0505 287 }
hlipka 0:3fa97f2c0505 288
hlipka 0:3fa97f2c0505 289 void SP_XmlDocTypeNode :: setSystemID( const char * systemID )
hlipka 0:3fa97f2c0505 290 {
hlipka 0:3fa97f2c0505 291 mEvent->setSystemID( systemID );
hlipka 0:3fa97f2c0505 292 }
hlipka 0:3fa97f2c0505 293
hlipka 0:3fa97f2c0505 294 const char * SP_XmlDocTypeNode :: getSystemID() const
hlipka 0:3fa97f2c0505 295 {
hlipka 0:3fa97f2c0505 296 return mEvent->getSystemID();
hlipka 0:3fa97f2c0505 297 }
hlipka 0:3fa97f2c0505 298
hlipka 0:3fa97f2c0505 299 void SP_XmlDocTypeNode :: setPublicID( const char * publicID )
hlipka 0:3fa97f2c0505 300 {
hlipka 0:3fa97f2c0505 301 mEvent->setPublicID( publicID );
hlipka 0:3fa97f2c0505 302 }
hlipka 0:3fa97f2c0505 303
hlipka 0:3fa97f2c0505 304 const char * SP_XmlDocTypeNode :: getPublicID() const
hlipka 0:3fa97f2c0505 305 {
hlipka 0:3fa97f2c0505 306 return mEvent->getPublicID();
hlipka 0:3fa97f2c0505 307 }
hlipka 0:3fa97f2c0505 308
hlipka 0:3fa97f2c0505 309 void SP_XmlDocTypeNode :: setDTD( const char * dtd )
hlipka 0:3fa97f2c0505 310 {
hlipka 0:3fa97f2c0505 311 mEvent->setDTD( dtd );
hlipka 0:3fa97f2c0505 312 }
hlipka 0:3fa97f2c0505 313
hlipka 0:3fa97f2c0505 314 const char * SP_XmlDocTypeNode :: getDTD() const
hlipka 0:3fa97f2c0505 315 {
hlipka 0:3fa97f2c0505 316 return mEvent->getDTD();
hlipka 0:3fa97f2c0505 317 }
hlipka 0:3fa97f2c0505 318
hlipka 0:3fa97f2c0505 319 //=========================================================
hlipka 0:3fa97f2c0505 320
hlipka 0:3fa97f2c0505 321 SP_XmlElementNode :: SP_XmlElementNode()
hlipka 0:3fa97f2c0505 322 : SP_XmlNode( eELEMENT )
hlipka 0:3fa97f2c0505 323 {
hlipka 0:3fa97f2c0505 324 mEvent = new SP_XmlStartTagEvent();
hlipka 0:3fa97f2c0505 325 mChildren = new SP_XmlNodeList();
hlipka 0:3fa97f2c0505 326 }
hlipka 0:3fa97f2c0505 327
hlipka 0:3fa97f2c0505 328 SP_XmlElementNode :: SP_XmlElementNode( SP_XmlStartTagEvent * event )
hlipka 0:3fa97f2c0505 329 : SP_XmlNode( eELEMENT )
hlipka 0:3fa97f2c0505 330 {
hlipka 0:3fa97f2c0505 331 mEvent = event;
hlipka 0:3fa97f2c0505 332 mChildren = new SP_XmlNodeList();
hlipka 0:3fa97f2c0505 333 }
hlipka 0:3fa97f2c0505 334
hlipka 0:3fa97f2c0505 335 SP_XmlElementNode :: ~SP_XmlElementNode()
hlipka 0:3fa97f2c0505 336 {
hlipka 0:3fa97f2c0505 337 if( NULL != mEvent ) delete mEvent;
hlipka 0:3fa97f2c0505 338 mEvent = NULL;
hlipka 0:3fa97f2c0505 339
hlipka 0:3fa97f2c0505 340 if( NULL != mChildren ) delete mChildren;
hlipka 0:3fa97f2c0505 341 mChildren = NULL;
hlipka 0:3fa97f2c0505 342 }
hlipka 0:3fa97f2c0505 343
hlipka 0:3fa97f2c0505 344 void SP_XmlElementNode :: setName( const char * name )
hlipka 0:3fa97f2c0505 345 {
hlipka 0:3fa97f2c0505 346 mEvent->setName( name );
hlipka 0:3fa97f2c0505 347 }
hlipka 0:3fa97f2c0505 348
hlipka 0:3fa97f2c0505 349 const char * SP_XmlElementNode :: getName() const
hlipka 0:3fa97f2c0505 350 {
hlipka 0:3fa97f2c0505 351 return mEvent->getName();
hlipka 0:3fa97f2c0505 352 }
hlipka 0:3fa97f2c0505 353
hlipka 0:3fa97f2c0505 354 void SP_XmlElementNode :: addChild( SP_XmlNode * node )
hlipka 0:3fa97f2c0505 355 {
hlipka 0:3fa97f2c0505 356 node->setParent( this );
hlipka 0:3fa97f2c0505 357 mChildren->append( node );
hlipka 0:3fa97f2c0505 358 }
hlipka 0:3fa97f2c0505 359
hlipka 0:3fa97f2c0505 360 const SP_XmlNodeList * SP_XmlElementNode :: getChildren() const
hlipka 0:3fa97f2c0505 361 {
hlipka 0:3fa97f2c0505 362 return mChildren;
hlipka 0:3fa97f2c0505 363 }
hlipka 0:3fa97f2c0505 364
hlipka 0:3fa97f2c0505 365 void SP_XmlElementNode :: addAttr( const char * name, const char * value )
hlipka 0:3fa97f2c0505 366 {
hlipka 0:3fa97f2c0505 367 mEvent->addAttr( name, value );
hlipka 0:3fa97f2c0505 368 }
hlipka 0:3fa97f2c0505 369
hlipka 0:3fa97f2c0505 370 const char * SP_XmlElementNode :: getAttrValue( const char * name ) const
hlipka 0:3fa97f2c0505 371 {
hlipka 0:3fa97f2c0505 372 return mEvent->getAttrValue( name );
hlipka 0:3fa97f2c0505 373 }
hlipka 0:3fa97f2c0505 374
hlipka 0:3fa97f2c0505 375 int SP_XmlElementNode :: getAttrCount() const
hlipka 0:3fa97f2c0505 376 {
hlipka 0:3fa97f2c0505 377 return mEvent->getAttrCount();
hlipka 0:3fa97f2c0505 378 }
hlipka 0:3fa97f2c0505 379
hlipka 0:3fa97f2c0505 380 const char * SP_XmlElementNode :: getAttr( int index, const char ** value ) const
hlipka 0:3fa97f2c0505 381 {
hlipka 0:3fa97f2c0505 382 return mEvent->getAttr( index, value );
hlipka 0:3fa97f2c0505 383 }
hlipka 0:3fa97f2c0505 384
hlipka 0:3fa97f2c0505 385 void SP_XmlElementNode :: removeAttr( const char * name )
hlipka 0:3fa97f2c0505 386 {
hlipka 0:3fa97f2c0505 387 mEvent->removeAttr( name );
hlipka 0:3fa97f2c0505 388 }
hlipka 0:3fa97f2c0505 389
hlipka 0:3fa97f2c0505 390 //=========================================================
hlipka 0:3fa97f2c0505 391
hlipka 0:3fa97f2c0505 392 SP_XmlCDataNode :: SP_XmlCDataNode()
hlipka 0:3fa97f2c0505 393 : SP_XmlNode( eCDATA )
hlipka 0:3fa97f2c0505 394 {
hlipka 0:3fa97f2c0505 395 mEvent = new SP_XmlCDataEvent();
hlipka 0:3fa97f2c0505 396 }
hlipka 0:3fa97f2c0505 397
hlipka 0:3fa97f2c0505 398 SP_XmlCDataNode :: SP_XmlCDataNode( SP_XmlCDataEvent * event )
hlipka 0:3fa97f2c0505 399 : SP_XmlNode( eCDATA )
hlipka 0:3fa97f2c0505 400 {
hlipka 0:3fa97f2c0505 401 mEvent = event;
hlipka 0:3fa97f2c0505 402 }
hlipka 0:3fa97f2c0505 403
hlipka 0:3fa97f2c0505 404 SP_XmlCDataNode :: ~SP_XmlCDataNode()
hlipka 0:3fa97f2c0505 405 {
hlipka 0:3fa97f2c0505 406 if( NULL != mEvent ) delete mEvent;
hlipka 0:3fa97f2c0505 407 mEvent = NULL;
hlipka 0:3fa97f2c0505 408 }
hlipka 0:3fa97f2c0505 409
hlipka 0:3fa97f2c0505 410 void SP_XmlCDataNode :: setText( const char * content )
hlipka 0:3fa97f2c0505 411 {
hlipka 0:3fa97f2c0505 412 mEvent->setText( content, strlen( content ) );
hlipka 0:3fa97f2c0505 413 }
hlipka 0:3fa97f2c0505 414
hlipka 0:3fa97f2c0505 415 const char * SP_XmlCDataNode :: getText() const
hlipka 0:3fa97f2c0505 416 {
hlipka 0:3fa97f2c0505 417 return mEvent->getText();
hlipka 0:3fa97f2c0505 418 }
hlipka 0:3fa97f2c0505 419
hlipka 0:3fa97f2c0505 420 //=========================================================
hlipka 0:3fa97f2c0505 421
hlipka 0:3fa97f2c0505 422 SP_XmlCommentNode :: SP_XmlCommentNode()
hlipka 0:3fa97f2c0505 423 : SP_XmlNode( eCOMMENT )
hlipka 0:3fa97f2c0505 424 {
hlipka 0:3fa97f2c0505 425 mEvent = new SP_XmlCommentEvent();
hlipka 0:3fa97f2c0505 426 }
hlipka 0:3fa97f2c0505 427
hlipka 0:3fa97f2c0505 428 SP_XmlCommentNode :: SP_XmlCommentNode( SP_XmlCommentEvent * event )
hlipka 0:3fa97f2c0505 429 : SP_XmlNode( eCOMMENT )
hlipka 0:3fa97f2c0505 430 {
hlipka 0:3fa97f2c0505 431 mEvent = event;
hlipka 0:3fa97f2c0505 432 }
hlipka 0:3fa97f2c0505 433
hlipka 0:3fa97f2c0505 434 SP_XmlCommentNode :: ~SP_XmlCommentNode()
hlipka 0:3fa97f2c0505 435 {
hlipka 0:3fa97f2c0505 436 if( NULL != mEvent ) delete mEvent;
hlipka 0:3fa97f2c0505 437 mEvent = NULL;
hlipka 0:3fa97f2c0505 438 }
hlipka 0:3fa97f2c0505 439
hlipka 0:3fa97f2c0505 440 void SP_XmlCommentNode :: setText( const char * comment )
hlipka 0:3fa97f2c0505 441 {
hlipka 0:3fa97f2c0505 442 mEvent->setText( comment, strlen( comment ) );
hlipka 0:3fa97f2c0505 443 }
hlipka 0:3fa97f2c0505 444
hlipka 0:3fa97f2c0505 445 const char * SP_XmlCommentNode :: getText() const
hlipka 0:3fa97f2c0505 446 {
hlipka 0:3fa97f2c0505 447 return mEvent->getText();
hlipka 0:3fa97f2c0505 448 }
hlipka 0:3fa97f2c0505 449