diff --git a/stepmania/src/XmlFile.cpp b/stepmania/src/XmlFile.cpp index b83f0dfff7..e3ad16e67b 100644 --- a/stepmania/src/XmlFile.cpp +++ b/stepmania/src/XmlFile.cpp @@ -552,13 +552,9 @@ char* XNode::Load( const char* pszXml, LPPARSEINFO pi /*= &piDefault*/ ) // Coder Date Desc // bro 2002-10-29 //======================================================== -CString XAttr::GetXML( LPDISP_OPT opt /*= &optDefault*/ ) +void XAttr::GetXML( RageFile &f, LPDISP_OPT opt /*= &optDefault*/ ) { - std::ostringstream os; - //os << (const char*)name << "='" << (const char*)value << "' "; - os << (const char*)name << "='" - << (const char*)(opt->reference_value&&opt->entitys?opt->entitys->Entity2Ref(value):value) << "' "; - return os.str().c_str(); + f.Write(name + "='" + (opt->reference_value&&opt->entitys?opt->entitys->Entity2Ref(value):value) + "' "); } //======================================================== @@ -570,45 +566,44 @@ CString XAttr::GetXML( LPDISP_OPT opt /*= &optDefault*/ ) // Coder Date Desc // bro 2002-10-29 //======================================================== -CString XNode::GetXML( LPDISP_OPT opt /*= &optDefault*/ ) +void XNode::GetXML( RageFile &f, LPDISP_OPT opt /*= &optDefault*/ ) { - std::ostringstream os; // tab if( opt && opt->newline ) { if( opt && opt->newline ) - os << "\r\n"; + f.Write("\r\n"); for( int i = 0 ; i < opt->tab_base ; i++) - os << '\t'; + f.Write("\t"); } // GetXML(opt); + attrs[i]->GetXML(f, opt); } if( childs.empty() && value.empty() ) { // alone tag - os << "/>"; + f.Write("/>"); } else { // and get child - os << '>'; + f.Write(">"); if( opt && opt->newline && !childs.empty() ) { opt->tab_base++; } for( unsigned i = 0 ; i < childs.size(); i++ ) - os << (const char*)childs[i]->GetXML( opt ); + childs[i]->GetXML( f, opt ); // Text Value if( value != ("") ) @@ -616,21 +611,21 @@ CString XNode::GetXML( LPDISP_OPT opt /*= &optDefault*/ ) if( opt && opt->newline && !childs.empty() ) { if( opt && opt->newline ) - os << "\r\n"; + f.Write("\r\n"); for( int i = 0 ; i < opt->tab_base ; i++) - os << '\t'; + f.Write("\t"); } - os << (const char*)(opt->reference_value&&opt->entitys?opt->entitys->Entity2Ref(value):value); + f.Write((opt->reference_value&&opt->entitys?opt->entitys->Entity2Ref(value):value)); } // CloseTag if( opt && opt->newline && !childs.empty() ) { - os << "\r\n"; + f.Write("\r\n"); for( int i = 0 ; i < opt->tab_base-1 ; i++) - os << '\t'; + f.Write("\t"); } - os << "'; + f.Write(""); if( opt && opt->newline ) { @@ -638,8 +633,6 @@ CString XNode::GetXML( LPDISP_OPT opt /*= &optDefault*/ ) opt->tab_base--; } } - - return os.str().c_str(); } //======================================================== @@ -1247,6 +1240,6 @@ bool XNode::SaveToFile( CString sFile, LPDISP_OPT opt ) LOG->Warn("Couldn't open %s for writing: %s", sFile.c_str(), f.GetError().c_str() ); return false; } - f.Write( this->GetXML(opt) ); + this->GetXML(f, opt); return true; } diff --git a/stepmania/src/XmlFile.h b/stepmania/src/XmlFile.h index 190a3db651..78fafc7db4 100644 --- a/stepmania/src/XmlFile.h +++ b/stepmania/src/XmlFile.h @@ -110,7 +110,7 @@ struct XAttr XNode* parent; - CString GetXML( LPDISP_OPT opt = &optDefault ); + void GetXML( RageFile &f, LPDISP_OPT opt = &optDefault ); }; typedef XAttr* LPXAttr; @@ -134,7 +134,7 @@ struct XNode // Load/Save XML char* Load( const char* pszXml, LPPARSEINFO pi = &piDefault ); char* LoadAttributes( const char* pszAttrs, LPPARSEINFO pi = &piDefault ); - CString GetXML( LPDISP_OPT opt = &optDefault ); + void GetXML( RageFile &f, LPDISP_OPT opt = &optDefault ); bool LoadFromFile( CString sFile, LPPARSEINFO pi = &piDefault ); bool SaveToFile( CString sFile, LPDISP_OPT opt = &optDefault );