void XMLSerialized::SaveInfo(const CString& sName,const int& iValue,TagType tagType,const CString& parent){ CMarkup xml = OpenFile(); if(FindPath(parent,&xml)){ if(tagType== TagType::Element) { if(!xml.FindElem(sName)) xml.AddElem( sName); xml.SetData(iValue); return; } if(tagType== TagType::Attribute) { xml.SetAttrib(sName,iValue); return; } } xml.Save(sFileName); }
bool XMLSerialized::Serialize(){ CMarkup* xml = new CMarkup(); if(xml==NULL){ return false; } std::map<int,DATA*>::const_iterator item; for(item= m_mapping.begin(); item != m_mapping.end(); item ++){ DATA* data = item->second; if(data->_tagType == TagType::Root){ xml->AddElem( data->_tagName); continue; } if(data->_tagType == TagType::Element){ xml->ResetPos(); if(FindPath(data->_parent,xml)){ xml->AddElem( data->_tagName); if(data->_dataType!= DataType::None){ CString result; switch(data->_dataType){ case DataType::String: xml->SetData(*(CString*)data->_value); break; case DataType::Int: xml->SetData(*(int*)data->_value); break; case DataType::Bool: xml->SetData((int)*(bool*)data->_value); break; case DataType::ByteArray: ByteArrayToString(result,L"|",(byte*)data->_value); xml->SetData(result); break; case DataType::IntArray: IntArrayToString(result,L"|",(int*)data->_value); xml->SetData(result); break; } } continue; } } if(data->_tagType == TagType::Attribute){ if(FindPath(data->_parent,xml)){ xml->OutOfElem(); CString result; switch(data->_dataType){ case DataType::String: xml->AddAttrib(data->_tagName,*(CString*)data->_value); break; case DataType::Int: xml->AddAttrib(data->_tagName,*(int*)data->_value); break; case DataType::Bool: xml->AddAttrib(data->_tagName,(int)*(bool*)data->_value); break; case DataType::ByteArray: ByteArrayToString(result,L"|",(byte*)data->_value); xml->AddAttrib(data->_tagName,result); break; case DataType::IntArray: IntArrayToString(result,L"|",(int*)data->_value); xml->AddAttrib(data->_tagName,result); break; } } } } xml->Save(sFileName); delete xml; xml=NULL; return true; }
void XMLSerialized::SaveInfo(){ CMarkup xml = OpenFile(); if(xml.GetDoc().GetLength()==0){ Serialize(); return; } std::map<int,DATA*>::const_iterator item; for(item= m_mapping.begin(); item != m_mapping.end(); item ++){ DATA* data = item->second; if(data->_tagType == TagType::Root){ continue; } if(data->_tagType == TagType::Element){ xml.ResetPos(); if(FindPath(data->_parent,&xml)){ if(!xml.FindElem(data->_tagName)){ xml.AddElem(data->_tagName); } if(data->_dataType!= DataType::None){ CString result; switch(data->_dataType){ case DataType::String: xml.SetData(*(CString*)data->_value); break; case DataType::Int: xml.SetData(*(int*)data->_value); break; case DataType::Bool: xml.SetData((int)*(bool*)data->_value); break; case DataType::ByteArray: ByteArrayToString(result,L"|",(byte*)data->_value); xml.SetData(result); break; case DataType::IntArray: IntArrayToString(result,L"|",(int*)data->_value); xml.SetData(result); break; } } continue; } } if(data->_tagType == TagType::Attribute){ if(FindPath(data->_parent,&xml)){ xml.OutOfElem(); CString result; switch(data->_dataType){ case DataType::String: xml.SetAttrib(data->_tagName,*(CString*)data->_value); break; case DataType::Int: xml.SetAttrib(data->_tagName,*(int*)data->_value); break; case DataType::Bool: xml.SetAttrib(data->_tagName,(int)*(bool*)data->_value); break; case DataType::ByteArray: ByteArrayToString(result,L"|",(byte*)data->_value); xml.SetAttrib(data->_tagName,result); break; case DataType::IntArray: IntArrayToString(result,L"|",(int*)data->_value); xml.SetAttrib(data->_tagName,result); break; } } } } xml.Save(sFileName); }