Keep indentation control fully inside the XMLPrinter. You'll have to subclass it to override its standard behaviour by overwriting CompactMode().
diff --git a/tinyxml2.h b/tinyxml2.h
index 431088d..a584010 100755
--- a/tinyxml2.h
+++ b/tinyxml2.h
@@ -822,9 +822,6 @@
     // 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 @@
     }

 

 protected:

+	virtual bool CompactMode( const XMLElement& elem )	{ return _compactMode; };

+

     void SealElement();

     bool _elementJustOpened;

     DynArray< const char*, 10 > _stack;