From ec975cede83df38cb563a2177535e74232a439e2 Mon Sep 17 00:00:00 2001 From: Lee Thomason Date: Mon, 23 Jan 2012 11:42:06 -0800 Subject: [PATCH] iterate on parsing. --- tinyxml2.cpp | 20 ++++++++++++-------- tinyxml2.suo | Bin 31232 -> 32256 bytes xmltest.cpp | 9 +++++++-- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/tinyxml2.cpp b/tinyxml2.cpp index eae8f26..07fa458 100644 --- a/tinyxml2.cpp +++ b/tinyxml2.cpp @@ -67,6 +67,7 @@ const char* StrPair::GetStr() else { *q = *p; ++p; + ++q; } } } @@ -89,8 +90,9 @@ char* XMLBase::ParseText( char* p, StrPair* pair, const char* endTag ) while ( *p ) { if ( *p == endChar && strncmp( p, endTag, length ) == 0 ) { pair->Set( start, p, StrPair::NEEDS_ENTITY_PROCESSING | StrPair::NEEDS_NEWLINE_NORMALIZATION ); - break; + return p + length; } + ++p; } return p; } @@ -99,7 +101,6 @@ char* XMLBase::ParseText( char* p, StrPair* pair, const char* endTag ) char* XMLBase::ParseName( char* p, StrPair* pair ) { char* start = p; - char* nextTag = 0; start = p; if ( !start || !(*start) ) { @@ -273,7 +274,7 @@ XMLComment::~XMLComment() void XMLComment::Print( FILE* fp, int depth ) { XMLNode::Print( fp, depth ); - fprintf( fp, "\n", value ); + fprintf( fp, "\n", value.GetStr() ); } @@ -425,11 +426,11 @@ void XMLElement::Print( FILE* cfile, int depth ) } if ( firstChild ) { - fprintf( cfile, ">/n" ); + fprintf( cfile, ">\n" ); for( XMLNode* node=firstChild; node; node=node->next ) { node->Print( cfile, depth+1 ); } - fprintf( cfile, "", Name() ); + fprintf( cfile, "\n", Name() ); } else { fprintf( cfile, "/>\n" ); @@ -459,10 +460,13 @@ bool XMLDocument::Parse( const char* p ) XMLNode* node = 0; char* q = Identify( this, charBuffer->mem, &node ); - if ( node ) { + while ( node ) { root->InsertEndChild( node ); - node->ParseDeep( q ); - return true; + q = node->ParseDeep( q ); + node = 0; + if ( q && *q ) { + q = Identify( this, q, &node ); + } } return false; } diff --git a/tinyxml2.suo b/tinyxml2.suo index 77d44eb586664308ba9abd3157ae908c3f346cee..62101d6c76ae1f8e672bd8e2dbbf1624c2335c2a 100644 GIT binary patch delta 2831 zcmb_eT}+$T8UBv>ARpkm#&sOxc;<^S#!xUexY*dlaj*k~pM<{vB_uUJVL(hmD9MPo zskG{*X`+#ut7xh`ZQ8{ywx(hijk09#IX1Mb zcCkqV9r^sc=RNPw^FHslxXl(Hv0ELQy;ez*_R`o#n>!ga$J{eI@p?bf0O0VVc4EZ$bVrn7r=O4S7x%F zx4=f>*)y=8?~iAd&{X_Q(s~LWSNT_7%${8OlEf8SCrIMJn(|wX;-D2b6}RS$NXy35 zc7e<^VJY>nuu0CP14%}=(t@y2PA%!{<-9O$=16!n;9uJtWeR`vsh#^V)3sb~l!VVr z?Fzrm<04eY_7!WIbCKBhm`$gy6#qhl$;+xgWX2z>0{YaFWu-)py${`af zON+5m8i3YgL03d(R=id^f;qPzt}>^PPTMomX|E37v8%Wlabcp@j57`e>t$yU?ci%Y zu9eyGX+r=H9S(S#T;TFI9Q{ai>M>bf4At4jqPSXG4cTeIHfiA!zbrSiFzxzq!+C=& z;a1u4*9tA76@7&(QiPx|EOkjYz`UJU^G?DWbYZr%0Pcv2P*h<@FfvhsuAquf>n+0K zWW8zEs%X7kSabimDz=38oEPB!nuWlV#Jj$q3VVD=`V5*r>1uaX(Go@RH5xoguhZ{J z%Hz7tp!W@u5_(Q-*`z|a7$gGAK zg`dk9^2elE`j@0G9I5b#0Bl9IySsC^9`Ok0wt~gv=(tFm+Gu7gWco`8kLk(u?~B)Y z@X`?_pWD+;g9ou1lZ|wbg1>U8N~Aw|(u&!m`a+kq^YRKFMC$Oq%>d(JBMhfqNWM_D zYe6a5RfkVbTZEt0c+gshu5vr{Aw}rx^4Rcpw*l!|IoCXk9Wf}bZbZe&K+@LEu2ZNTIUcF5#j5%Bj-h` zYLJMUNozlDHfQ8wajmd4pS%hZz(0?$1)iV>Np~fdk81JfXbK#P_Q;@6G_xY`I_Ez?5k<5p8P`4+s=s*)-1h;VQSe$ZxT zjRFJnF&DkUnMV+pSc~E-bV=NcYR-LA3cy2(?p%cZ`YvZXMI3zC%Yh z$(5$88}~Y@kSw(dYWb*>)DeLtI?cPT-8)`Ibm2!VE~Bd_Qe-2FJ&Oilz_`Ip;EiyRs z=iK-?P0GMd9foi46hAfHVLPXi^dZe_Xc+}5@U9L;MSJNO^1?Gn6msd9XwEzGr8EiQ zHT{0!6zJ>D8NvTGTRo!0N0m!_m~X7kilOf8B6(SY5P*U+%4`lpOxnS@6K3?jmsMZZ#MT5HittPUeIO;h?@LzKq-oF4o^Q+AO delta 3310 zcmb_eeQZ9u~o=bd}+x%Zy?JLlfXhir0*U1?6su}G4XL)c7s^!V}PEmS*jC~Z@gouoX1 zLfA$y<3d`OiT5d|uL?r^L7JIe>^9EIgPF?QgA1Sj`3_q{`pNwGnEZDpA0`>ShBo>8 zTzJkM4Wi850r4cM@15Js$%YbQx@37=b=OlFd}BbRL&^6BHI0b`pV zvBmi5E$^iT{G>S}g{3knCe=#;$xr{9AY4nYzodQONMXJR0F~I7m9)5ZhI+` zAv5M2yV2WcgSx|oafcQD`~x^y5`;b9ifEA+^CcNjo9$5d$jpgwktQ@sSjL@v2le(M zxzmMR1x7JSsW;%B(~N~t6;}cos4g~O%Beth9mbml2jTa5G1Nk{7G%R;!N+FePc_-F z6h?8$cW3{-LAHafp0sf8%{#KMt>pO_f z*V7B*ZQi#S>~&VLz+}Xkn!<>oh?|_FyIFT?E;37uEDu`U=c4zAQRn}9)SK~kc{Y*( znW;Eb-UPMYE*$jRdK+tiW~)p0ipaS{txvGm!HQdOo}A8)@w4Jmb{L;%l}Pv${Ib}@ zrf_p`0<|xgC`jj_RcL4{Ev4BSU@Xn01KlO4F~8S=eI>ao2Uel-IUCu$7(MNAQBOb0 zv|Qn=d#Z(c1~H=&Jv#Iww)wUY(fqhoX4iL44jm|S(zsN68PUPV9lZt3T9j7YOW$oY zCJ4o!D~{fS#_eP!q>osvG_KFPhPF(4E-k&J;5mL|iYbCX6>`V)4m=6$^i8APcG9wz3S& zG?=i|a2fu(YMc$3#OP9l8=pd2V+0F3yG736QC*>0algqVC@|9GS|N|S$u4Lz+iY2( zwc1=PNbG7UMXk+`d(D}cYuPPk9%^xlwZFPEdtDDDeV+EK#CjjJyT$wkM0HKy`>s-* zGL(hpS}hdiUedeSv`+JZOd`n7$h(zTY|UkZBA+M}Qh#hKW=B_j@oZ-l!S`-p3vTSD zOt8CAtoA{>UxZU~w0LDTN5yLRoAMJ@Dc`O^F zd#qy5NB7!<&xTrZ(d^RCV*t;URN}rT1GWPuv5TAg?3Hh_XoX6@GvTsWeZXI@c_IP7 z&!cHk)f2AQ!X8x(t99jSEEcQtojV(9=^yTi^$#8yu0D&7bv1^*lShttdyv=Vj@vu$ zFlNA~UESZHRm?wSwem|;FRp}^lA^P8U6#-8kK%2c1^f29G2NxX-c=+<@Vj0w?!+hw z{Jjz77io$^xanQB8iC?Rj?^AG@ zGRaWA6Ze~q+mh7E3$Ja2DgqzD%ks$06EXVQNe`D{df=RtM(7ehPS2e>O4R+*AW3dX zk@iU~QnR#+o;JPItC%#0Na~e3M6Y4`E+Q*w+;FOJ``44%6@#~uS?@%od1vDjcX<=n zFBh2$D3G(_iSMjo8_0^j$K`!u>FCG!K-RF-KZU=_R!mw4HDDi;_?UW+)IBM!N-VRJQ_KnGw^YhP<0+KdTdW@P4N8O9${CUk(*s^Ec^N9>5;{ ziXTtWElPCjk)Ee_^%0`v2oaH!EM", - // "", + static const char* test[] = { "", + "", + "", + "", "", + "", + "", 0 }; for( int i=0; test[i]; ++i ) { XMLDocument doc; doc.Parse( test[i] ); doc.Print( stdout ); + printf( "----------------------------------------------\n" ); } } return 0;