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
spxmlevent.cpp@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 | #include <string.h> |
hlipka | 0:3fa97f2c0505 | 8 | #include <stdlib.h> |
hlipka | 0:3fa97f2c0505 | 9 | |
hlipka | 0:3fa97f2c0505 | 10 | #include "mstring.h" |
hlipka | 0:3fa97f2c0505 | 11 | |
hlipka | 0:3fa97f2c0505 | 12 | #include "spxmlevent.hpp" |
hlipka | 0:3fa97f2c0505 | 13 | #include "spxmlutils.hpp" |
hlipka | 0:3fa97f2c0505 | 14 | |
hlipka | 0:3fa97f2c0505 | 15 | SP_XmlPullEvent :: SP_XmlPullEvent( int eventType ) |
hlipka | 0:3fa97f2c0505 | 16 | : mEventType( eventType ) |
hlipka | 0:3fa97f2c0505 | 17 | { |
hlipka | 0:3fa97f2c0505 | 18 | } |
hlipka | 0:3fa97f2c0505 | 19 | |
hlipka | 0:3fa97f2c0505 | 20 | SP_XmlPullEvent :: ~SP_XmlPullEvent() |
hlipka | 0:3fa97f2c0505 | 21 | { |
hlipka | 0:3fa97f2c0505 | 22 | } |
hlipka | 0:3fa97f2c0505 | 23 | |
hlipka | 0:3fa97f2c0505 | 24 | int SP_XmlPullEvent :: getEventType() |
hlipka | 0:3fa97f2c0505 | 25 | { |
hlipka | 0:3fa97f2c0505 | 26 | return mEventType; |
hlipka | 0:3fa97f2c0505 | 27 | } |
hlipka | 0:3fa97f2c0505 | 28 | |
hlipka | 0:3fa97f2c0505 | 29 | //========================================================= |
hlipka | 0:3fa97f2c0505 | 30 | |
hlipka | 0:3fa97f2c0505 | 31 | SP_XmlPullEventQueue :: SP_XmlPullEventQueue() |
hlipka | 0:3fa97f2c0505 | 32 | { |
hlipka | 0:3fa97f2c0505 | 33 | mQueue = new SP_XmlQueue(); |
hlipka | 0:3fa97f2c0505 | 34 | } |
hlipka | 0:3fa97f2c0505 | 35 | |
hlipka | 0:3fa97f2c0505 | 36 | SP_XmlPullEventQueue :: ~SP_XmlPullEventQueue() |
hlipka | 0:3fa97f2c0505 | 37 | { |
hlipka | 0:3fa97f2c0505 | 38 | for( void * item = mQueue->pop(); NULL != item; item = mQueue->pop() ) { |
hlipka | 0:3fa97f2c0505 | 39 | delete (SP_XmlPullEvent*)item; |
hlipka | 0:3fa97f2c0505 | 40 | } |
hlipka | 0:3fa97f2c0505 | 41 | |
hlipka | 0:3fa97f2c0505 | 42 | delete mQueue; |
hlipka | 0:3fa97f2c0505 | 43 | } |
hlipka | 0:3fa97f2c0505 | 44 | |
hlipka | 0:3fa97f2c0505 | 45 | void SP_XmlPullEventQueue :: enqueue( SP_XmlPullEvent * event ) |
hlipka | 0:3fa97f2c0505 | 46 | { |
hlipka | 0:3fa97f2c0505 | 47 | mQueue->push( event ); |
hlipka | 0:3fa97f2c0505 | 48 | } |
hlipka | 0:3fa97f2c0505 | 49 | |
hlipka | 0:3fa97f2c0505 | 50 | SP_XmlPullEvent * SP_XmlPullEventQueue :: dequeue() |
hlipka | 0:3fa97f2c0505 | 51 | { |
hlipka | 0:3fa97f2c0505 | 52 | SP_XmlPullEvent * event = (SP_XmlPullEvent*)mQueue->pop(); |
hlipka | 0:3fa97f2c0505 | 53 | return event; |
hlipka | 0:3fa97f2c0505 | 54 | } |
hlipka | 0:3fa97f2c0505 | 55 | |
hlipka | 0:3fa97f2c0505 | 56 | //========================================================= |
hlipka | 0:3fa97f2c0505 | 57 | |
hlipka | 0:3fa97f2c0505 | 58 | SP_XmlStartDocEvent :: SP_XmlStartDocEvent() |
hlipka | 0:3fa97f2c0505 | 59 | : SP_XmlPullEvent( eStartDocument ) |
hlipka | 0:3fa97f2c0505 | 60 | { |
hlipka | 0:3fa97f2c0505 | 61 | } |
hlipka | 0:3fa97f2c0505 | 62 | |
hlipka | 0:3fa97f2c0505 | 63 | SP_XmlStartDocEvent :: ~SP_XmlStartDocEvent() |
hlipka | 0:3fa97f2c0505 | 64 | { |
hlipka | 0:3fa97f2c0505 | 65 | } |
hlipka | 0:3fa97f2c0505 | 66 | |
hlipka | 0:3fa97f2c0505 | 67 | //========================================================= |
hlipka | 0:3fa97f2c0505 | 68 | |
hlipka | 0:3fa97f2c0505 | 69 | SP_XmlEndDocEvent :: SP_XmlEndDocEvent() |
hlipka | 0:3fa97f2c0505 | 70 | : SP_XmlPullEvent( eEndDocument ) |
hlipka | 0:3fa97f2c0505 | 71 | { |
hlipka | 0:3fa97f2c0505 | 72 | } |
hlipka | 0:3fa97f2c0505 | 73 | |
hlipka | 0:3fa97f2c0505 | 74 | SP_XmlEndDocEvent :: ~SP_XmlEndDocEvent() |
hlipka | 0:3fa97f2c0505 | 75 | { |
hlipka | 0:3fa97f2c0505 | 76 | } |
hlipka | 0:3fa97f2c0505 | 77 | |
hlipka | 0:3fa97f2c0505 | 78 | //========================================================= |
hlipka | 0:3fa97f2c0505 | 79 | |
hlipka | 0:3fa97f2c0505 | 80 | SP_XmlDocTypeEvent :: SP_XmlDocTypeEvent() |
hlipka | 0:3fa97f2c0505 | 81 | : SP_XmlPullEvent( eDocType ) |
hlipka | 0:3fa97f2c0505 | 82 | { |
hlipka | 0:3fa97f2c0505 | 83 | memset( mName, 0, sizeof( mName ) ); |
hlipka | 0:3fa97f2c0505 | 84 | memset( mSystemID, 0, sizeof( mSystemID ) ); |
hlipka | 0:3fa97f2c0505 | 85 | memset( mPublicID, 0, sizeof( mPublicID ) ); |
hlipka | 0:3fa97f2c0505 | 86 | memset( mDTD, 0, sizeof( mDTD ) ); |
hlipka | 0:3fa97f2c0505 | 87 | } |
hlipka | 0:3fa97f2c0505 | 88 | |
hlipka | 0:3fa97f2c0505 | 89 | SP_XmlDocTypeEvent :: ~SP_XmlDocTypeEvent() |
hlipka | 0:3fa97f2c0505 | 90 | { |
hlipka | 0:3fa97f2c0505 | 91 | } |
hlipka | 0:3fa97f2c0505 | 92 | |
hlipka | 0:3fa97f2c0505 | 93 | void SP_XmlDocTypeEvent :: setName( const char * name ) |
hlipka | 0:3fa97f2c0505 | 94 | { |
hlipka | 0:3fa97f2c0505 | 95 | strncpy( mName, name, sizeof( mName ) - 1 ); |
hlipka | 0:3fa97f2c0505 | 96 | } |
hlipka | 0:3fa97f2c0505 | 97 | |
hlipka | 0:3fa97f2c0505 | 98 | const char * SP_XmlDocTypeEvent :: getName() const |
hlipka | 0:3fa97f2c0505 | 99 | { |
hlipka | 0:3fa97f2c0505 | 100 | return mName; |
hlipka | 0:3fa97f2c0505 | 101 | } |
hlipka | 0:3fa97f2c0505 | 102 | |
hlipka | 0:3fa97f2c0505 | 103 | void SP_XmlDocTypeEvent :: setSystemID( const char * systemID ) |
hlipka | 0:3fa97f2c0505 | 104 | { |
hlipka | 0:3fa97f2c0505 | 105 | strncpy( mSystemID, systemID, sizeof( mSystemID ) - 1 ); |
hlipka | 0:3fa97f2c0505 | 106 | } |
hlipka | 0:3fa97f2c0505 | 107 | |
hlipka | 0:3fa97f2c0505 | 108 | const char * SP_XmlDocTypeEvent :: getSystemID() const |
hlipka | 0:3fa97f2c0505 | 109 | { |
hlipka | 0:3fa97f2c0505 | 110 | return mSystemID; |
hlipka | 0:3fa97f2c0505 | 111 | } |
hlipka | 0:3fa97f2c0505 | 112 | |
hlipka | 0:3fa97f2c0505 | 113 | void SP_XmlDocTypeEvent :: setPublicID( const char * publicID ) |
hlipka | 0:3fa97f2c0505 | 114 | { |
hlipka | 0:3fa97f2c0505 | 115 | strncpy( mPublicID, publicID, sizeof( mPublicID ) - 1 ); |
hlipka | 0:3fa97f2c0505 | 116 | } |
hlipka | 0:3fa97f2c0505 | 117 | |
hlipka | 0:3fa97f2c0505 | 118 | const char * SP_XmlDocTypeEvent :: getPublicID() const |
hlipka | 0:3fa97f2c0505 | 119 | { |
hlipka | 0:3fa97f2c0505 | 120 | return mPublicID; |
hlipka | 0:3fa97f2c0505 | 121 | } |
hlipka | 0:3fa97f2c0505 | 122 | |
hlipka | 0:3fa97f2c0505 | 123 | void SP_XmlDocTypeEvent :: setDTD( const char * dtd ) |
hlipka | 0:3fa97f2c0505 | 124 | { |
hlipka | 0:3fa97f2c0505 | 125 | strncpy( mDTD, dtd, sizeof( mDTD ) - 1 ); |
hlipka | 0:3fa97f2c0505 | 126 | } |
hlipka | 0:3fa97f2c0505 | 127 | |
hlipka | 0:3fa97f2c0505 | 128 | const char * SP_XmlDocTypeEvent :: getDTD() const |
hlipka | 0:3fa97f2c0505 | 129 | { |
hlipka | 0:3fa97f2c0505 | 130 | return mDTD; |
hlipka | 0:3fa97f2c0505 | 131 | } |
hlipka | 0:3fa97f2c0505 | 132 | |
hlipka | 0:3fa97f2c0505 | 133 | //========================================================= |
hlipka | 0:3fa97f2c0505 | 134 | |
hlipka | 0:3fa97f2c0505 | 135 | SP_XmlPIEvent :: SP_XmlPIEvent() |
hlipka | 0:3fa97f2c0505 | 136 | : SP_XmlPullEvent( ePI ) |
hlipka | 0:3fa97f2c0505 | 137 | { |
hlipka | 0:3fa97f2c0505 | 138 | memset( mTarget, 0, sizeof( mTarget ) ); |
hlipka | 0:3fa97f2c0505 | 139 | mData = NULL; |
hlipka | 0:3fa97f2c0505 | 140 | } |
hlipka | 0:3fa97f2c0505 | 141 | |
hlipka | 0:3fa97f2c0505 | 142 | SP_XmlPIEvent :: ~SP_XmlPIEvent() |
hlipka | 0:3fa97f2c0505 | 143 | { |
hlipka | 0:3fa97f2c0505 | 144 | if( NULL != mData ) free( mData ); |
hlipka | 0:3fa97f2c0505 | 145 | mData = NULL; |
hlipka | 0:3fa97f2c0505 | 146 | } |
hlipka | 0:3fa97f2c0505 | 147 | |
hlipka | 0:3fa97f2c0505 | 148 | void SP_XmlPIEvent :: setTarget( const char * target ) |
hlipka | 0:3fa97f2c0505 | 149 | { |
hlipka | 0:3fa97f2c0505 | 150 | snprintf( mTarget, sizeof( mTarget ), "%s", target ); |
hlipka | 0:3fa97f2c0505 | 151 | } |
hlipka | 0:3fa97f2c0505 | 152 | |
hlipka | 0:3fa97f2c0505 | 153 | const char * SP_XmlPIEvent :: getTarget() |
hlipka | 0:3fa97f2c0505 | 154 | { |
hlipka | 0:3fa97f2c0505 | 155 | return mTarget; |
hlipka | 0:3fa97f2c0505 | 156 | } |
hlipka | 0:3fa97f2c0505 | 157 | |
hlipka | 0:3fa97f2c0505 | 158 | void SP_XmlPIEvent :: setData( const char * data, int len ) |
hlipka | 0:3fa97f2c0505 | 159 | { |
hlipka | 0:3fa97f2c0505 | 160 | if( NULL != data ) { |
hlipka | 0:3fa97f2c0505 | 161 | if( NULL != mData ) free( mData ); |
hlipka | 0:3fa97f2c0505 | 162 | mData = (char*)malloc( len + 1 ); |
hlipka | 0:3fa97f2c0505 | 163 | memcpy( mData, data, len ); |
hlipka | 0:3fa97f2c0505 | 164 | mData[ len ] = '\0'; |
hlipka | 0:3fa97f2c0505 | 165 | } |
hlipka | 0:3fa97f2c0505 | 166 | } |
hlipka | 0:3fa97f2c0505 | 167 | |
hlipka | 0:3fa97f2c0505 | 168 | const char * SP_XmlPIEvent :: getData() |
hlipka | 0:3fa97f2c0505 | 169 | { |
hlipka | 0:3fa97f2c0505 | 170 | return mData; |
hlipka | 0:3fa97f2c0505 | 171 | } |
hlipka | 0:3fa97f2c0505 | 172 | |
hlipka | 0:3fa97f2c0505 | 173 | //========================================================= |
hlipka | 0:3fa97f2c0505 | 174 | |
hlipka | 0:3fa97f2c0505 | 175 | SP_XmlDocDeclEvent :: SP_XmlDocDeclEvent() |
hlipka | 0:3fa97f2c0505 | 176 | : SP_XmlPullEvent( eDocDecl ) |
hlipka | 0:3fa97f2c0505 | 177 | { |
hlipka | 0:3fa97f2c0505 | 178 | memset( mVersion, 0, sizeof( mVersion ) ); |
hlipka | 0:3fa97f2c0505 | 179 | memset( mEncoding, 0, sizeof( mEncoding ) ); |
hlipka | 0:3fa97f2c0505 | 180 | mStandalone = -1; |
hlipka | 0:3fa97f2c0505 | 181 | } |
hlipka | 0:3fa97f2c0505 | 182 | |
hlipka | 0:3fa97f2c0505 | 183 | SP_XmlDocDeclEvent :: ~SP_XmlDocDeclEvent() |
hlipka | 0:3fa97f2c0505 | 184 | { |
hlipka | 0:3fa97f2c0505 | 185 | } |
hlipka | 0:3fa97f2c0505 | 186 | |
hlipka | 0:3fa97f2c0505 | 187 | void SP_XmlDocDeclEvent :: setVersion( const char * version ) |
hlipka | 0:3fa97f2c0505 | 188 | { |
hlipka | 0:3fa97f2c0505 | 189 | strncpy( mVersion, version, sizeof( mVersion ) -1 ); |
hlipka | 0:3fa97f2c0505 | 190 | } |
hlipka | 0:3fa97f2c0505 | 191 | |
hlipka | 0:3fa97f2c0505 | 192 | const char * SP_XmlDocDeclEvent :: getVersion() const |
hlipka | 0:3fa97f2c0505 | 193 | { |
hlipka | 0:3fa97f2c0505 | 194 | return mVersion; |
hlipka | 0:3fa97f2c0505 | 195 | } |
hlipka | 0:3fa97f2c0505 | 196 | |
hlipka | 0:3fa97f2c0505 | 197 | void SP_XmlDocDeclEvent :: setEncoding( const char * encoding ) |
hlipka | 0:3fa97f2c0505 | 198 | { |
hlipka | 0:3fa97f2c0505 | 199 | strncpy( mEncoding, encoding, sizeof( mEncoding ) -1 ); |
hlipka | 0:3fa97f2c0505 | 200 | } |
hlipka | 0:3fa97f2c0505 | 201 | |
hlipka | 0:3fa97f2c0505 | 202 | const char * SP_XmlDocDeclEvent :: getEncoding() const |
hlipka | 0:3fa97f2c0505 | 203 | { |
hlipka | 0:3fa97f2c0505 | 204 | return mEncoding; |
hlipka | 0:3fa97f2c0505 | 205 | } |
hlipka | 0:3fa97f2c0505 | 206 | |
hlipka | 0:3fa97f2c0505 | 207 | void SP_XmlDocDeclEvent :: setStandalone( int standalone ) |
hlipka | 0:3fa97f2c0505 | 208 | { |
hlipka | 0:3fa97f2c0505 | 209 | mStandalone = standalone; |
hlipka | 0:3fa97f2c0505 | 210 | } |
hlipka | 0:3fa97f2c0505 | 211 | |
hlipka | 0:3fa97f2c0505 | 212 | int SP_XmlDocDeclEvent :: getStandalone() const |
hlipka | 0:3fa97f2c0505 | 213 | { |
hlipka | 0:3fa97f2c0505 | 214 | return mStandalone; |
hlipka | 0:3fa97f2c0505 | 215 | } |
hlipka | 0:3fa97f2c0505 | 216 | |
hlipka | 0:3fa97f2c0505 | 217 | //========================================================= |
hlipka | 0:3fa97f2c0505 | 218 | |
hlipka | 0:3fa97f2c0505 | 219 | SP_XmlStartTagEvent :: SP_XmlStartTagEvent() |
hlipka | 0:3fa97f2c0505 | 220 | : SP_XmlPullEvent( eStartTag ) |
hlipka | 0:3fa97f2c0505 | 221 | { |
hlipka | 0:3fa97f2c0505 | 222 | mName = NULL; |
hlipka | 0:3fa97f2c0505 | 223 | mAttrNameList = new SP_XmlArrayList(); |
hlipka | 0:3fa97f2c0505 | 224 | mAttrValueList = new SP_XmlArrayList(); |
hlipka | 0:3fa97f2c0505 | 225 | } |
hlipka | 0:3fa97f2c0505 | 226 | |
hlipka | 0:3fa97f2c0505 | 227 | SP_XmlStartTagEvent :: ~SP_XmlStartTagEvent() |
hlipka | 0:3fa97f2c0505 | 228 | { |
hlipka | 0:3fa97f2c0505 | 229 | if( NULL != mName ) free( mName ); |
hlipka | 0:3fa97f2c0505 | 230 | mName = NULL; |
hlipka | 0:3fa97f2c0505 | 231 | |
hlipka | 0:3fa97f2c0505 | 232 | int i = 0; |
hlipka | 0:3fa97f2c0505 | 233 | |
hlipka | 0:3fa97f2c0505 | 234 | for( i = 0; i < mAttrNameList->getCount(); i++ ) { |
hlipka | 0:3fa97f2c0505 | 235 | free( (char*)mAttrNameList->getItem( i ) ); |
hlipka | 0:3fa97f2c0505 | 236 | } |
hlipka | 0:3fa97f2c0505 | 237 | |
hlipka | 0:3fa97f2c0505 | 238 | delete mAttrNameList; |
hlipka | 0:3fa97f2c0505 | 239 | mAttrNameList = NULL; |
hlipka | 0:3fa97f2c0505 | 240 | |
hlipka | 0:3fa97f2c0505 | 241 | for( i = 0; i < mAttrValueList->getCount(); i++ ) { |
hlipka | 0:3fa97f2c0505 | 242 | free( (char*)mAttrValueList->getItem( i ) ); |
hlipka | 0:3fa97f2c0505 | 243 | } |
hlipka | 0:3fa97f2c0505 | 244 | delete mAttrValueList; |
hlipka | 0:3fa97f2c0505 | 245 | mAttrValueList = NULL; |
hlipka | 0:3fa97f2c0505 | 246 | } |
hlipka | 0:3fa97f2c0505 | 247 | |
hlipka | 0:3fa97f2c0505 | 248 | void SP_XmlStartTagEvent :: setName( const char * name ) |
hlipka | 0:3fa97f2c0505 | 249 | { |
hlipka | 0:3fa97f2c0505 | 250 | if( NULL != name ) { |
hlipka | 0:3fa97f2c0505 | 251 | if( NULL != mName ) free( mName ); |
hlipka | 0:3fa97f2c0505 | 252 | mName = strdup( name ); |
hlipka | 0:3fa97f2c0505 | 253 | } |
hlipka | 0:3fa97f2c0505 | 254 | } |
hlipka | 0:3fa97f2c0505 | 255 | |
hlipka | 0:3fa97f2c0505 | 256 | const char * SP_XmlStartTagEvent :: getName() const |
hlipka | 0:3fa97f2c0505 | 257 | { |
hlipka | 0:3fa97f2c0505 | 258 | return mName; |
hlipka | 0:3fa97f2c0505 | 259 | } |
hlipka | 0:3fa97f2c0505 | 260 | |
hlipka | 0:3fa97f2c0505 | 261 | void SP_XmlStartTagEvent :: addAttr( const char * name, const char * value ) |
hlipka | 0:3fa97f2c0505 | 262 | { |
hlipka | 0:3fa97f2c0505 | 263 | if( NULL != name ) mAttrNameList->append( strdup( name ) ); |
hlipka | 0:3fa97f2c0505 | 264 | if( NULL != value ) mAttrValueList->append( strdup( value ) ); |
hlipka | 0:3fa97f2c0505 | 265 | } |
hlipka | 0:3fa97f2c0505 | 266 | |
hlipka | 0:3fa97f2c0505 | 267 | const char * SP_XmlStartTagEvent :: getAttrValue( const char * name ) const |
hlipka | 0:3fa97f2c0505 | 268 | { |
hlipka | 0:3fa97f2c0505 | 269 | const char * ret = NULL; |
hlipka | 0:3fa97f2c0505 | 270 | |
hlipka | 0:3fa97f2c0505 | 271 | for( int i = 0; i < mAttrNameList->getCount(); i++ ) { |
hlipka | 0:3fa97f2c0505 | 272 | if( 0 == strcmp( name, (char*)mAttrNameList->getItem( i ) ) ) { |
hlipka | 0:3fa97f2c0505 | 273 | ret = (char*)mAttrValueList->getItem( i ); |
hlipka | 0:3fa97f2c0505 | 274 | break; |
hlipka | 0:3fa97f2c0505 | 275 | } |
hlipka | 0:3fa97f2c0505 | 276 | } |
hlipka | 0:3fa97f2c0505 | 277 | |
hlipka | 0:3fa97f2c0505 | 278 | return ret; |
hlipka | 0:3fa97f2c0505 | 279 | } |
hlipka | 0:3fa97f2c0505 | 280 | |
hlipka | 0:3fa97f2c0505 | 281 | int SP_XmlStartTagEvent :: getAttrCount() const |
hlipka | 0:3fa97f2c0505 | 282 | { |
hlipka | 0:3fa97f2c0505 | 283 | return mAttrNameList->getCount(); |
hlipka | 0:3fa97f2c0505 | 284 | } |
hlipka | 0:3fa97f2c0505 | 285 | |
hlipka | 0:3fa97f2c0505 | 286 | const char * SP_XmlStartTagEvent :: getAttr( int index, const char ** value ) const |
hlipka | 0:3fa97f2c0505 | 287 | { |
hlipka | 0:3fa97f2c0505 | 288 | const char * name = (char*)mAttrNameList->getItem( index ); |
hlipka | 0:3fa97f2c0505 | 289 | if( NULL != name && NULL != value ) *value = (char*)mAttrValueList->getItem( index ); |
hlipka | 0:3fa97f2c0505 | 290 | |
hlipka | 0:3fa97f2c0505 | 291 | return name; |
hlipka | 0:3fa97f2c0505 | 292 | } |
hlipka | 0:3fa97f2c0505 | 293 | |
hlipka | 0:3fa97f2c0505 | 294 | void SP_XmlStartTagEvent :: removeAttr( const char * name ) |
hlipka | 0:3fa97f2c0505 | 295 | { |
hlipka | 0:3fa97f2c0505 | 296 | int index = -1; |
hlipka | 0:3fa97f2c0505 | 297 | |
hlipka | 0:3fa97f2c0505 | 298 | for( int i = 0; i < mAttrNameList->getCount(); i++ ) { |
hlipka | 0:3fa97f2c0505 | 299 | if( 0 == strcmp( name, (char*)mAttrNameList->getItem( i ) ) ) { |
hlipka | 0:3fa97f2c0505 | 300 | index = i; |
hlipka | 0:3fa97f2c0505 | 301 | break; |
hlipka | 0:3fa97f2c0505 | 302 | } |
hlipka | 0:3fa97f2c0505 | 303 | } |
hlipka | 0:3fa97f2c0505 | 304 | |
hlipka | 0:3fa97f2c0505 | 305 | if( index >= 0 ) { |
hlipka | 0:3fa97f2c0505 | 306 | free( mAttrNameList->takeItem( index ) ); |
hlipka | 0:3fa97f2c0505 | 307 | free( mAttrValueList->takeItem( index ) ); |
hlipka | 0:3fa97f2c0505 | 308 | } |
hlipka | 0:3fa97f2c0505 | 309 | } |
hlipka | 0:3fa97f2c0505 | 310 | |
hlipka | 0:3fa97f2c0505 | 311 | //========================================================= |
hlipka | 0:3fa97f2c0505 | 312 | |
hlipka | 0:3fa97f2c0505 | 313 | SP_XmlTextEvent :: SP_XmlTextEvent( int eventType ) |
hlipka | 0:3fa97f2c0505 | 314 | : SP_XmlPullEvent( eventType ) |
hlipka | 0:3fa97f2c0505 | 315 | { |
hlipka | 0:3fa97f2c0505 | 316 | mText = NULL; |
hlipka | 0:3fa97f2c0505 | 317 | } |
hlipka | 0:3fa97f2c0505 | 318 | |
hlipka | 0:3fa97f2c0505 | 319 | SP_XmlTextEvent :: ~SP_XmlTextEvent() |
hlipka | 0:3fa97f2c0505 | 320 | { |
hlipka | 0:3fa97f2c0505 | 321 | if( NULL != mText ) free( mText ); |
hlipka | 0:3fa97f2c0505 | 322 | mText = NULL; |
hlipka | 0:3fa97f2c0505 | 323 | } |
hlipka | 0:3fa97f2c0505 | 324 | |
hlipka | 0:3fa97f2c0505 | 325 | void SP_XmlTextEvent :: setText( const char * text, int len ) |
hlipka | 0:3fa97f2c0505 | 326 | { |
hlipka | 0:3fa97f2c0505 | 327 | if( NULL != text ) { |
hlipka | 0:3fa97f2c0505 | 328 | if( NULL != mText ) free( mText ); |
hlipka | 0:3fa97f2c0505 | 329 | mText = (char*)malloc( len + 1 ); |
hlipka | 0:3fa97f2c0505 | 330 | memcpy( mText, text, len ); |
hlipka | 0:3fa97f2c0505 | 331 | mText[ len ] = '\0'; |
hlipka | 0:3fa97f2c0505 | 332 | } |
hlipka | 0:3fa97f2c0505 | 333 | } |
hlipka | 0:3fa97f2c0505 | 334 | |
hlipka | 0:3fa97f2c0505 | 335 | const char * SP_XmlTextEvent :: getText() const |
hlipka | 0:3fa97f2c0505 | 336 | { |
hlipka | 0:3fa97f2c0505 | 337 | return mText; |
hlipka | 0:3fa97f2c0505 | 338 | } |
hlipka | 0:3fa97f2c0505 | 339 | |
hlipka | 0:3fa97f2c0505 | 340 | //========================================================= |
hlipka | 0:3fa97f2c0505 | 341 | |
hlipka | 0:3fa97f2c0505 | 342 | SP_XmlEndTagEvent :: SP_XmlEndTagEvent() |
hlipka | 0:3fa97f2c0505 | 343 | : SP_XmlTextEvent( eEndTag ) |
hlipka | 0:3fa97f2c0505 | 344 | { |
hlipka | 0:3fa97f2c0505 | 345 | } |
hlipka | 0:3fa97f2c0505 | 346 | |
hlipka | 0:3fa97f2c0505 | 347 | SP_XmlEndTagEvent :: ~SP_XmlEndTagEvent() |
hlipka | 0:3fa97f2c0505 | 348 | { |
hlipka | 0:3fa97f2c0505 | 349 | } |
hlipka | 0:3fa97f2c0505 | 350 | |
hlipka | 0:3fa97f2c0505 | 351 | //========================================================= |
hlipka | 0:3fa97f2c0505 | 352 | |
hlipka | 0:3fa97f2c0505 | 353 | SP_XmlCDataEvent :: SP_XmlCDataEvent() |
hlipka | 0:3fa97f2c0505 | 354 | : SP_XmlTextEvent( eCData ) |
hlipka | 0:3fa97f2c0505 | 355 | { |
hlipka | 0:3fa97f2c0505 | 356 | } |
hlipka | 0:3fa97f2c0505 | 357 | |
hlipka | 0:3fa97f2c0505 | 358 | SP_XmlCDataEvent :: ~SP_XmlCDataEvent() |
hlipka | 0:3fa97f2c0505 | 359 | { |
hlipka | 0:3fa97f2c0505 | 360 | } |
hlipka | 0:3fa97f2c0505 | 361 | |
hlipka | 0:3fa97f2c0505 | 362 | //========================================================= |
hlipka | 0:3fa97f2c0505 | 363 | |
hlipka | 0:3fa97f2c0505 | 364 | SP_XmlCommentEvent :: SP_XmlCommentEvent() |
hlipka | 0:3fa97f2c0505 | 365 | : SP_XmlTextEvent( eComment ) |
hlipka | 0:3fa97f2c0505 | 366 | { |
hlipka | 0:3fa97f2c0505 | 367 | } |
hlipka | 0:3fa97f2c0505 | 368 | |
hlipka | 0:3fa97f2c0505 | 369 | SP_XmlCommentEvent :: ~SP_XmlCommentEvent() |
hlipka | 0:3fa97f2c0505 | 370 | { |
hlipka | 0:3fa97f2c0505 | 371 | } |
hlipka | 0:3fa97f2c0505 | 372 |