diff --git a/tinyxml2.cpp b/tinyxml2.cpp index 5117986..beaeeb8 100755 --- a/tinyxml2.cpp +++ b/tinyxml2.cpp @@ -1323,7 +1323,6 @@ void XMLElement::SetBoolFirstChild( bool inBool ) else if( !FirstChild() ) { theBoolElem = GetDocument()->NewElement( inBool ? "true" : "false" ); InsertFirstChild( theBoolElem ); - SetForceCompactMode(true); } } @@ -2190,7 +2189,9 @@ bool XMLPrinter::VisitEnter( const XMLDocument& doc ) bool XMLPrinter::VisitEnter( const XMLElement& element, const XMLAttribute* attribute ) { - OpenElement( element.Name(), _compactMode ? true : element.Parent()->GetForceCompactMode() ); + const XMLElement* parentElem = element.Parent()->ToElement(); + bool compactMode = parentElem ? CompactMode(*parentElem) : _compactMode; + OpenElement( element.Name(), compactMode ); while ( attribute ) { PushAttribute( attribute->Name(), attribute->Value() ); attribute = attribute->Next(); @@ -2201,7 +2202,7 @@ bool XMLPrinter::VisitEnter( const XMLElement& element, const XMLAttribute* attr bool XMLPrinter::VisitExit( const XMLElement& element ) { - CloseElement( _compactMode ? true : element.GetForceCompactMode() ); + CloseElement( CompactMode(element) ); return true; } diff --git a/tinyxml2.h b/tinyxml2.h index 431088d..a584010 100755 --- a/tinyxml2.h +++ b/tinyxml2.h @@ -822,9 +822,6 @@ public: // internal virtual char* ParseDeep( char*, StrPair* ); - bool GetForceCompactMode() const { if( _forceCompactMode || !Parent() ) return _forceCompactMode; return Parent()->GetForceCompactMode(); }; - void SetForceCompactMode( bool b ) { _forceCompactMode = b; }; - protected: XMLNode( XMLDocument* ); virtual ~XMLNode(); @@ -2079,6 +2076,8 @@ public: } protected: + virtual bool CompactMode( const XMLElement& elem ) { return _compactMode; }; + void SealElement(); bool _elementJustOpened; DynArray< const char*, 10 > _stack;