From 22aead1c73c64bccfdce2e9628c78c2da7f08f0e Mon Sep 17 00:00:00 2001 From: Lee Thomason Date: Mon, 23 Jan 2012 13:29:35 -0800 Subject: [PATCH] attribute support --- tinyxml2.cpp | 9 +++++++-- tinyxml2.h | 1 + tinyxml2.suo | Bin 32256 -> 32256 bytes xmltest.cpp | 6 ++++-- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/tinyxml2.cpp b/tinyxml2.cpp index 07fa458..367f05c 100644 --- a/tinyxml2.cpp +++ b/tinyxml2.cpp @@ -288,6 +288,9 @@ char* XMLComment::ParseDeep( char* p ) // --------- XMLAttribute ---------- // char* XMLAttribute::ParseDeep( char* p ) { + p = ParseText( p, &name, "=" ); + if ( !p || !*p ) return 0; + char endTag[2] = { *p, 0 }; ++p; p = ParseText( p, &value, endTag ); @@ -298,7 +301,8 @@ char* XMLAttribute::ParseDeep( char* p ) void XMLAttribute::Print( FILE* cfile ) { - fprintf( cfile, "\"%s\"", value ); + // fixme: sort out single vs. double quote + fprintf( cfile, "%s=\"%s\"", name.GetStr(), value.GetStr() ); } @@ -351,7 +355,7 @@ char* XMLElement::ParseDeep( char* p ) } // attribute. - if ( *p == SINGLE_QUOTE || *p == DOUBLE_QUOTE ) { + if ( IsAlpha( *p ) ) { XMLAttribute* attrib = new XMLAttribute( this ); p = attrib->ParseDeep( p ); if ( !p ) { @@ -459,6 +463,7 @@ bool XMLDocument::Parse( const char* p ) charBuffer = CharBuffer::Construct( p ); XMLNode* node = 0; + // fixme: clean up char* q = Identify( this, charBuffer->mem, &node ); while ( node ) { root->InsertEndChild( node ); diff --git a/tinyxml2.h b/tinyxml2.h index 100ade0..ba5d031 100644 --- a/tinyxml2.h +++ b/tinyxml2.h @@ -169,6 +169,7 @@ public: private: char* ParseDeep( char* p ); + StrPair name; StrPair value; XMLAttribute* next; }; diff --git a/tinyxml2.suo b/tinyxml2.suo index 62101d6c76ae1f8e672bd8e2dbbf1624c2335c2a..bcaeb41d4b6e9ff08220c3f499efae611566cbb5 100644 GIT binary patch delta 1032 zcmb7DO-vI(6rR~`X=|yLmeLv`6x#%75vyo0CYVYP6CnZ@5G5+Xf&!M-78Eh2iHQdf zB=GRUslw4fj6-kpV_x>Cbh~_tNcN; zVk~5gl~SAHGnRna#i;U?8$&Omb1o5AKXEkzRb0pm@y=ebe&8Z-3HX`KW(Qygfy+P? z7y@EI92fx-fQ%c?S;@!1M}g}(?FQX5IUkyzDdrte5Rj#ps$XQbsa*N2h#%H^5K(8p zZLo3awQq`Ywi@WEH$+Kyi;Y|1+P=X}8FvdkQTK_Yr^RIBM!51fxMwq^oV&y~uhl}H zJ-y_uw2P4=clb;|nP{sLRn@QgOqDXLB@8n)R;u?kipKC87m4;MDrvtfj(5!SqG{Ay zU*+0;5V?KB6qUAj)7&WwEp`Mc-C5*v@mv(E(0t&xsZP?&Dy4h9G=DUoV#oaSq1kMTtnVWh`<4|CcnzZKa#=9H zv)$(ccxz?d>S!BDH&foos@|`pX?9s z9%94Di>*DYF@^N|+IQ2bVB+Q%_aVzk$J-K4=lcu!S(@`qR delta 560 zcmZqp!`SeLaf1&Ns~iIZgXrWyCS_IuAWMF8CDUg{)&)+A9&DQnS>7|U{QLj^|K=1n z14cn00}L{N>N0`&-^4&=#bOWxC|nAqp=$nD0{K-CMdF({PB3wROb1C$zR04o`3n~d zBa;Ke=3m@SER&P+N0QuJBH_=@3$}v?NqF%Wc}7N&&0iI`ITz_LEp8}bni#0FSx4^*<02!z z$wo0%o2#_i7$%0wn!8}J@!ZpgIo3|ul6%F}EV6rNdR$g=rB nSu;4mS^I#JJ0=Hmcu#hz-UEyem&r$}YbGD^l-Vp}x`Yt`qpi+7 diff --git a/xmltest.cpp b/xmltest.cpp index 322d25c..4972275 100644 --- a/xmltest.cpp +++ b/xmltest.cpp @@ -28,13 +28,15 @@ int main( int argc, const char* argv ) } #endif { - static const char* test[] = { "", + static const char* test[] = { //"", "", "", - "", + //"", "", "", "", + " \n \n ", + "", 0 }; for( int i=0; test[i]; ++i ) {