Exemplo n.º 1
0
BOOL COCSInventoryState::WriteToFile(LPCTSTR lpstrFilename, LPCTSTR lpstrSection)
{
	CMarkup	myXml;
	TiXmlElement *pNode, *pTemp;

	// Load current state file
	if (myXml.LoadFile( lpstrFilename))
	{
		// File already exists, so remove existing section from XML 
		myXml.ResetPos();
		pNode = myXml.FindFirstElem( lpstrSection);
		while (pNode)
		{
			pTemp = pNode;
			pNode = myXml.FindNextElem( lpstrSection, pTemp);
			myXml.DeleteElem( pTemp);
		}
	}
	// Add new section
	myXml.ResetPos();
	if (!FormatXML( &myXml, lpstrSection))
		return FALSE;
	// Save state file
	if (!myXml.SaveFile( lpstrFilename))
		return FALSE;
	return TRUE;
}
Exemplo n.º 2
0
// 根据配置索引获取配置信息
CString CVCheckerClsConfig::fGetConfigData(int nConfigIndex)
{
	if (m_strConfigFile == _T(""))
		return _T("");

	CMarkup xml;
	BOOL bLoad = FALSE;
	bLoad = xml.Load(m_strConfigFile);
	if (!bLoad)
		return _T(""); 

	xml.ResetPos();
	while ( xml.FindChildElem(_T("System_Config")))
	{
		xml.IntoElem();
		
		//xml.ResetMainPos();
		//xml.FindChildElem( "NAME" );
		////	xml.FindChildElem();
		//CString csName = xml.GetChildData();
		//AfxMessageBox(csName);

		//xml.ResetMainPos(); //注意复位
		//xml.FindChildElem( "SN" );
		////	xml.FindChildElem();
		//CString csSN = xml.GetChildData();
		//AfxMessageBox(csSN);

		xml.OutOfElem();
	}	

	return CString();
}
bool VectorOfFloatComplexType::ParseXMLInstance(const std::string& instance)
{ 
	CMarkup parser;
	parser.SetDoc(instance);
	parser.ResetPos();
	parser.FindElem();
	if(parser.GetTagName()!=name)
		return false;
	parser.IntoElem();	
	while(parser.FindElem())
	{
		std::string str=parser.GetTagName();
		std::string val=parser.GetSubDoc();
		Float* value_item=new Float(str);
		value_item->ParseXMLInstance(val);
		elements[0].AddValue(value_item);
	}
	return true;
}
Exemplo n.º 4
0
int getChavesProfessor(string path, chavesProfessor *temp)
{
    CMarkup xml;
    int nTrab = 0, nArt = 0;

    if(!xml.Load(path)){
        cout << "Erro de abertura do arquivo xml." << endl;
        return 1;
    }


    strcpy (temp->nomeArquivo, path.c_str());
    if (!xml.FindElem("CURRICULO-VITAE")){
        cout << "Sem CV" << endl;
        return ERROR;
    }
// ================ NOME ===================

    xml.IntoElem(); //seta CV como tag pai

    if(!xml.FindElem("DADOS-GERAIS")){
        cout << "Sem DADOS-GERAIS." << endl;
        return ERROR;
    }
    strcpy (temp->nome, xml.GetAttrib("NOME-COMPLETO").c_str());
    //cout << temp.nome << endl;
    xml.IntoElem(); // define DADOS-GERAIS como parent



    xml.ResetPos();


// ========= TRABALHOS EM EVENTOS ===================
    xml.FindElem("CURRICULO-VITAE"); // se passou pelo primeiro findelem(curriculo vitae)
    //passa por esse
    xml.IntoElem(); //seta CV como tag pai

    if(!xml.FindElem("PRODUCAO-BIBLIOGRAFICA")){
        cout << "Sem PRODUCAO-BIBLIOGRAFICA." <<temp->nome<< endl;
        return ERROR;
    }
    xml.IntoElem();

    if(!xml.FindElem("TRABALHOS-EM-EVENTOS")){
        cout << "Sem TRABALHOS-EM-EVENTOS." << endl;
        return ERROR;
    }
    xml.IntoElem();// define TRABALHOS-EM-EVENTOS como parent

    while(xml.FindElem()){
        nTrab++;
    }
    temp->nPEventos = nTrab;
    xml.ResetPos();


// ========= ARTIGOS PUBLICADOS ===================
    xml.FindElem("CURRICULO-VITAE"); // se passou pelo primeiro findelem(curriculo vitae)
    //passa por esse
    xml.IntoElem(); //seta CV como tag pai

    if(!xml.FindElem("PRODUCAO-BIBLIOGRAFICA")){
        cout << "Sem PRODUCAO-BIBLIOGRAFICA."<<temp->nome << endl;
        return ERROR;
    }
    xml.IntoElem();

    if(!xml.FindElem("ARTIGOS-PUBLICADOS")){
        cout << "Sem ARTIGOS-PUBLICADOS."<<temp->nome << endl;
        return ERROR;
    }
    xml.IntoElem();// define ARTIGOS-PUBLICADOS como parent

    while(xml.FindElem()){
        nArt++;
    }
    temp->nPPeriodicos = nArt;


    return SUCCESS;
}
Exemplo n.º 5
0
int parseProfessor(string path, dadosProfessor *temp){
    CMarkup xml;
    int nTrab = 0, nArt = 0;

    if(!xml.Load(path)){
        cout << "Erro de abertura do arquivo xml." << endl;
        return 1;
    }

// ========= DADOS GERAIS ===================
    if (!xml.FindElem("CURRICULO-VITAE")){
        cout << "Sem CV" << endl;
        return ERROR;
    }
    xml.IntoElem(); //seta CV como tag pai

    if(!xml.FindElem("DADOS-GERAIS")){
        cout << "Sem DADOS-GERAIS." << endl;
        return ERROR;
    }
    temp->nome = xml.GetAttrib("NOME-COMPLETO");
    //cout << temp.nome << endl;
    xml.IntoElem(); // define DADOS-GERAIS como parent

    if(!xml.FindElem("ATUACOES-PROFISSIONAIS")){
        cout << "Sem ATUACOES-PROFISSIONAIS" <<endl;
        return ERROR;
    }
    if(!xml.FindChildElem("ATUACAO-PROFISSIONAL")){
        cout << "Sem ATUACAO-PROFISSIONAL" << endl;
        return ERROR;
    }
    temp->instituicao = xml.GetChildAttrib("NOME-INSTITUICAO");
    //cout << temp.instituicao << endl;
    xml.IntoElem(); // define ATUACAO-PROFISSIONAL como parent

    if(!xml.FindChildElem("ATIVIDADES-DE-PESQUISA-E-DESENVOLVIMENTO")){
        cout << "Sem linha de pesquisa" << endl;
        return ERROR;
    }
    xml.IntoElem(); //define APD como parent

    if(!xml.FindChildElem("PESQUISA-E-DESENVOLVIMENTO")){
        cout << "Sem linha de pesquisa" << endl;
        return ERROR;
    }
    xml.IntoElem(); // define PD como parent

    if(!xml.FindChildElem("LINHA-DE-PESQUISA")){
        cout << "Sem linha de pesquisa" << endl;
        return ERROR;
    }
    temp->area = xml.GetChildAttrib("TITULO-DA-LINHA-DE-PESQUISA");
    //cout << temp.area << endl;

    xml.ResetPos();


// ========= TRABALHOS EM EVENTOS ===================
    xml.FindElem("CURRICULO-VITAE"); // se passou pelo primeiro findelem(curriculo vitae)
    //passa por esse
    xml.IntoElem(); //seta CV como tag pai

    if(!xml.FindElem("PRODUCAO-BIBLIOGRAFICA")){
        cout << "Sem PRODUCAO-BIBLIOGRAFICA." << endl;
        return ERROR;
    }
    xml.IntoElem();

    if(!xml.FindElem("TRABALHOS-EM-EVENTOS")){
        cout << "Sem TRABALHOS-EM-EVENTOS." << endl;
        return ERROR;
    }
    xml.IntoElem();// define TRABALHOS-EM-EVENTOS como parent

    while(xml.FindElem()){
        Trabalho trab;
        xml.FindChildElem("DADOS-BASICOS-DO-TRABALHO");
        trab.titulo = xml.GetChildAttrib("TITULO-DO-TRABALHO");
        trab.ano = xml.GetChildAttrib("ANO-DO-TRABALHO");
        temp->pubEventos.push_back(trab);
        nTrab++;
    }
    temp->nPubEventos = nTrab;
    xml.ResetPos();


// ========= ARTIGOS PUBLICADOS ===================
    xml.FindElem("CURRICULO-VITAE"); // se passou pelo primeiro findelem(curriculo vitae)
    //passa por esse
    xml.IntoElem(); //seta CV como tag pai

    if(!xml.FindElem("PRODUCAO-BIBLIOGRAFICA")){
        cout << "Sem PRODUCAO-BIBLIOGRAFICA." << endl;
        return ERROR;
    }
    xml.IntoElem();

    if(!xml.FindElem("ARTIGOS-PUBLICADOS")){
        cout << "Sem ARTIGOS-PUBLICADOS." << endl;
        return ERROR;
    }
    xml.IntoElem();// define ARTIGOS-PUBLICADOS como parent

    while(xml.FindElem()){
        Artigo artigo;
        xml.FindChildElem("DADOS-BASICOS-DO-ARTIGO");
        artigo.titulo = xml.GetChildAttrib("TITULO-DO-ARTIGO");
        artigo.ano = xml.GetChildAttrib("ANO-DO-ARTIGO");
        temp->pubPeriodicos.push_back(artigo);
        nArt++;
    }
    temp->nPubPeriodicos = nArt;


    return SUCCESS;
}
Exemplo n.º 6
0
/*			
SET_ITEM_DATA(type, Type, false);
SET_ITEM_DATA(version, Version, true);
SET_ITEM_DATA(downurl, DownURL, true);
SET_ITEM_DATA(downpath, DownPath, false);
SET_ITEM_DATA(description, Description, false);
SET_ITEM_DATA(force, Force, false);
SET_ITEM_DATA(regsrv, RegSrv, false);
*/
BOOL CUpdateUtil::ReadXML(CString& strXMLdoc, CItemList* pSourceItemList, int nKind)
{
	CString strData = "";
	
	if(strXMLdoc.IsEmpty())
		return FALSE;

	CMarkup xml;
	
	if(!xml.SetDoc(strXMLdoc))
		return FALSE;

	xml.ResetPos();

	if(!xml.FindElem(_T("update-data")))
		return FALSE;

	UTIL_CANCEL();
	while(xml.FindChildElem(_T("file")))
	{	
		UTIL_CANCEL();
		strData = "";
		strData = xml.GetChildAttrib(_T("name"));
		
		if(!strData.IsEmpty())
		{
			xml.IntoElem();
			if(nKind == UPDATE_KIND_SOURCE)
			{
				PUPDATE_DATA pFileData = (PUPDATE_DATA)pSourceItemList->GetNewItem();
				memset(pFileData, 0, sizeof(UPDATE_DATA));

				STRCPY(Name);
				if(xml.FindChildElem(_T("type")))
				{
					DATA_INIT_AND_DEPOSIT();
					STRCPY(Type);
				}

				if(xml.FindChildElem(_T("version")))
				{
					DATA_INIT_AND_DEPOSIT();
					STRCPY(Version);
				}
				
				if(xml.FindChildElem(_T("size")))
				{				
					DATA_INIT_AND_DEPOSIT();					
					pFileData->Size = CString2Integer(strData);
				}

				if(xml.FindChildElem(_T("downurl")))
				{				
					DATA_INIT_AND_DEPOSIT();
					STRCPY(DownURL);
				}
				else											
					return FALSE;							

				if(xml.FindChildElem(_T("downpath")))
				{				
					DATA_INIT_AND_DEPOSIT();
					strData = GetFolderPath(strData);
					STRCPY(DownPath);
				}
				
				if(xml.FindChildElem(_T("description")))
				{				
					DATA_INIT_AND_DEPOSIT();
					STRCPY(Description);
				}

				if(xml.FindChildElem(_T("force")))
				{				
					DATA_INIT_AND_DEPOSIT_NOCASE();
					STRCPY(Force);
				}

				if(xml.FindChildElem(_T("regsrv")))
				{				
					DATA_INIT_AND_DEPOSIT_NOCASE();
					STRCPY(RegSrv);
				}

				if(xml.FindChildElem(_T("checksum")))
				{
					DATA_INIT_AND_DEPOSIT_NOCASE();
					STRCPY(CheckSum);
				}
				
				if(xml.FindChildElem(_T("optionflag")))
				{
					DATA_INIT_AND_DEPOSIT();
					pFileData->OptionFlag = CString2Integer(strData);
				}
			}
			else
			{
				PUPDATE_DATA pFileData = (PUPDATE_DATA)pSourceItemList->GetNewItem();
				memset(pFileData, 0, sizeof(UPDATE_DATA));
				
				STRCPY(Name);
				if(xml.FindChildElem(_T("version")))
				{				
					DATA_INIT_AND_DEPOSIT();
					STRCPY(Version);
				}
				else
				{											
					return FALSE;							
				}

				if(xml.FindChildElem(_T("downpath")))
				{				
					DATA_INIT_AND_DEPOSIT();
					strData = GetFolderPath(strData);
					STRCPY(DownPath);
				}
			}
			xml.OutOfElem();
		}
	}
	
	return TRUE;
}
Exemplo n.º 7
0
int CMakeFrame::InitUserInfo(const char *info)
{
	CMarkup xmlConfig;
	xmlConfig.SetDoc(info);
	xmlConfig.ResetPos();
	xmlConfig.FindChildElem( "all" );
	xmlConfig.IntoElem();
	xmlConfig.FindElem( "head");
	xmlConfig.IntoElem();

	xmlConfig.FindElem( "afn" );
	afn = atoi(xmlConfig.GetData().c_str()) % 256;

	if(afn == 0x04 || afn == 0x0c || 1)
	{
		xmlConfig.ResetPos();
		xmlConfig.FindChildElem( "all" );
		xmlConfig.IntoElem();
		xmlConfig.FindElem( "body" );
		xmlConfig.IntoElem();
		xmlConfig.FindElem( "index" );
		index = atoi(xmlConfig.GetData().c_str());

		xmlConfig.FindElem("fn");
		xmlConfig.IntoElem();
		FnTotalNum = 0;
		while(xmlConfig.FindElem()){
			FnTotalNum ++;
		}
		xmlConfig.ResetPos();
		xmlConfig.FindChildElem( "all" );
		xmlConfig.IntoElem();
		xmlConfig.FindElem( "body" );
		xmlConfig.IntoElem();
		xmlConfig.FindElem("fn");
		xmlConfig.IntoElem();
		int j;
		for(j=0;j<FnTotalNum;j++)
		{
			xmlConfig.FindElem( "value" );
			fnValue[j]= xmlConfig.GetData();
		}

		xmlConfig.ResetPos();
		xmlConfig.FindChildElem( "all" );
		xmlConfig.IntoElem();
		xmlConfig.FindElem( "body" );
		xmlConfig.IntoElem();
		xmlConfig.FindElem("pn");
		xmlConfig.IntoElem();
		PnTotalNum = 0;
		while(xmlConfig.FindElem()){
			PnTotalNum ++;
		}

		xmlConfig.ResetPos();
		xmlConfig.FindChildElem( "all" );
		xmlConfig.IntoElem();
		xmlConfig.FindElem( "body" );
		xmlConfig.IntoElem();
		xmlConfig.FindElem("pn");
		xmlConfig.IntoElem();

		for(j=0;j<PnTotalNum;j++)
		{
			xmlConfig.FindElem( "value" );
			pnValue[j]= xmlConfig.GetData();
		}
	}
	return 1;
}
Exemplo n.º 8
0
BOOL CPackage::load( LPCTSTR lpstrFile)
{
	CString csBuffer;
	CMarkup myXml;
	TCHAR	cPath[_MAX_PATH], 
			cCommand[255];

	try
	{
		// Load "info" file content
		if (!myXml.LoadFile( lpstrFile))
			return FALSE;
		myXml.ResetPos();
		if (!myXml.FindFirstElem( _T( "DOWNLOAD")))
			return FALSE;
		m_csID = myXml.GetAttrib( _T( "ID"));
		csBuffer = myXml.GetAttrib( _T( "PRI"));
		if (csBuffer.IsEmpty())
			return FALSE;
		m_uPriority = _ttoi( csBuffer);
		m_csAction = myXml.GetAttrib( _T( "ACT"));
		m_csName = myXml.GetAttrib( _T( "NAME"));
		m_csDigest = myXml.GetAttrib( _T( "DIGEST"));
		m_csLocation = myXml.GetAttrib( _T( "LOC"));
		m_csProtocol = myXml.GetAttrib( _T( "PROTO"));
		csBuffer = myXml.GetAttrib( _T( "FRAGS"));
		if (csBuffer.IsEmpty())
			return FALSE;
		m_uFrags = _ttoi( csBuffer);
		m_csDigestAlgo = myXml.GetAttrib( _T( "DIGEST_ALGO"));
		m_csDigestAlgo.MakeLower();
		m_csDigestEncode = myXml.GetAttrib( _T( "DIGEST_ENCODE"));
		m_csDigestEncode.MakeLower();

		if (m_csAction == OCS_DOWNLOAD_ACTION_STORE)
		{
			// Store only action, get path where to store data
			if( !ExpandEnvironmentStrings( myXml.GetAttrib( _T( "PATH")), cPath, _MAX_PATH ))
			{
				return FALSE;
			}
			else
			{
				m_csPath = cPath;
				m_csPath.Replace( _T( "/"), _T( "\\"));
				m_csPath.Replace( _T( "INSTALL_PATH"), getInstallFolder());
			}
		}
		else
		{
			// Put into path tmp folder to unzip package
			if (GetTempPath( _MAX_PATH, m_csPath.GetBufferSetLength( _MAX_PATH+1)) == 0)
				return FALSE;
			m_csPath.ReleaseBuffer();
			m_csPath.AppendFormat( _T( "\\%s.OCS"), m_csID);
		}

		if (m_csAction == OCS_DOWNLOAD_ACTION_LAUNCH)
		{
			// In LAUNCH, command is in the NAME atribute
			if( !ExpandEnvironmentStrings( m_csName, cCommand, 255 ))
			{
				return FALSE;
			}
			else
			{
				m_csCommand = cCommand;
				m_csCommand.Replace( _T( "INSTALL_PATH"), getInstallFolder());
			}
		}
		else
		{
			// In Store or Execute mode, command is in the COMMAND attribute
			if( !ExpandEnvironmentStrings( myXml.GetAttrib( _T( "COMMAND")), cCommand, 255 ))
			{
				return FALSE;
			}
			else
			{
				m_csCommand = cCommand;
				m_csCommand.Replace( _T( "INSTALL_PATH"), getInstallFolder());
			}
		}
		m_csGardeFou = myXml.GetAttrib( _T( "GARDEFOU"));
		
		/* User notification */
		csBuffer = myXml.GetAttrib( _T( "NOTIFY_USER"));
		// Ensure non empty value
		if (!csBuffer.IsEmpty())
			m_bNotifyUser = (_ttoi( csBuffer) != 0);
		else
			m_bNotifyUser = FALSE;
		if (m_bNotifyUser)
		{
			csBuffer = myXml.GetAttrib( _T( "NOTIFY_COUNTDOWN"));
			// Ensure non empty value
			if (csBuffer.IsEmpty())
				csBuffer = COMMAND_TIMEOUT_DEFAULT;
			m_uNotifyCountdown = _ttoi( csBuffer);
			m_csNotifyText = myXml.GetAttrib( _T( "NOTIFY_TEXT"));
			if (myXml.GetAttrib( _T( "NOTIFY_CAN_ABORT")))
				m_bNotifyCanAbort = ( _ttoi( myXml.GetAttrib( _T( "NOTIFY_CAN_ABORT"))) != 0);
			else
				m_bNotifyCanAbort = FALSE;
			if (myXml.GetAttrib( _T( "NOTIFY_CAN_DELAY")))
				m_bNotifyCanDelay = ( _ttoi( myXml.GetAttrib( _T( "NOTIFY_CAN_DELAY"))) != 0);
			else
				m_bNotifyCanDelay = FALSE;
		}
		csBuffer = myXml.GetAttrib( _T( "NEED_DONE_ACTION"));
		// Ensure non empty value
		if (!csBuffer.IsEmpty())
			m_bNeedDoneAction = (_ttoi( csBuffer) != 0);
		else
			m_bNeedDoneAction = FALSE;
		if (m_bNeedDoneAction)
		{
			m_csNeedDoneActionText = myXml.GetAttrib( _T( "NEED_DONE_ACTION_TEXT"));
		}
		m_csSchedule = myXml.GetAttrib( _T( "SCHEDULE"));
		m_csPostCmd = myXml.GetAttrib( _T( "POSTCMD"));
	}
	catch( CException *pEx)
	{
		pEx->Delete();
		return FALSE;
	}
	return TRUE;
}
Exemplo n.º 9
0
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;
}
Exemplo n.º 10
0
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);
}