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 62101d6..bcaeb41 100644 Binary files a/tinyxml2.suo and b/tinyxml2.suo differ 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 ) {