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; }
// 根据配置索引获取配置信息 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; }
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; }
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; }
/* 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; }
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; }
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; }
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); }