CMarkup XMLSerialized::OpenFile(){ CMarkup xml; //nếu file chưa tồn tại thì kiểm tra trong listRole bool exist =PathFileExists(sFileName); if(!exist){ int begin = sFileName.ReverseFind('\\')+1; int end = sFileName.ReverseFind(L'.'); CString roleName = sFileName.Mid(begin,end-begin); if(roleName.Left(4)=="Role") return NULL; CString szLstRole = L"Character\\ListRole.xml"; ConvertFileName(szLstRole); //nếu không tồn tại file listRole thì tạo note root if(!PathFileExists(szLstRole)){ xml.AddElem(L"ListRoles"); } else{ xml.Load(szLstRole); xml.FindElem(L"ListRoles"); } xml.IntoElem(); while(xml.FindElem(L"Role")){ if(xml.GetAttrib(L"ID")==roleName){ sFileName=L"Character\\"+xml.GetAttrib(L"File"); ConvertFileName(sFileName); exist =true; break; } } //nếu trong listRole không có thì lưu trong listRole và tạo file if(!exist){ time_t timer; time(&timer); CTime t = timer; sFileName=t.Format(L"Role%d%m%Y%H%M%S.xml"); xml.AddElem(L"Role"); xml.AddAttrib(L"ID",roleName); xml.AddAttrib(L"File",sFileName); xml.Save(szLstRole); sFileName=L"Character\\"+sFileName; ConvertFileName(sFileName); return NULL; } } xml.Load(sFileName); if(xml.GetDoc().GetLength()>0) return xml; return NULL; }
BOOL WriteMarkupString(CMarkup& markDoc, ST_MARKITEM& itemIn) { if (!itemIn.strKey.IsEmpty() && itemIn.strKey.Compare(TEXT(".")) != 0) { markDoc.AddElem(itemIn.strKey, itemIn.strVal); } MAPKEYATTRIB ::iterator itb = itemIn.mapAttrib.begin(); MAPKEYATTRIB ::iterator ite = itemIn.mapAttrib.end(); for (; itb != ite; ++itb) { markDoc.AddAttrib(itb->first, itb->second); } MAPKEYVALUE& mapchild = itemIn.mapChildItem; MAPKEYVALUE::iterator itkvb = mapchild.begin(); MAPKEYVALUE::iterator itkve = mapchild.end(); for (; itkvb != itkve; ++itkvb) { markDoc.IntoElem(); WriteMarkupString(markDoc, itkvb->second); markDoc.OutOfElem(); } return TRUE; }
bool CRegisterIdMessage::packedSendMessage(NetMessage& netMessage) { CMarkup xml; xml.SetDoc("<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"); xml.AddElem("Message"); xml.AddChildElem("Header"); xml.IntoElem(); xml.AddAttrib("MsgType", "EMSG_REGISTERID_REQ"); xml.OutOfElem(); xml.AddChildElem("Info"); xml.IntoElem(); xml.AddAttrib("Id", MessageDataMediator->m_strNewId.toStdString().c_str()); //xml.AddAttrib("Id", "23423"); xml.OutOfElem(); netMessage.msgBuffer = packXml(&xml); netMessage.msgLen = xml.GetDoc().length(); return true; }
void CRequestXmlMessage::packedSendMessage(NetMessage& netMessage) { CMarkup xml; xml.SetDoc("<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"); xml.AddElem("Message"); xml.AddChildElem("Header"); xml.IntoElem(); xml.AddAttrib("MsgType", "EMSG_REQUESTXML_RSP"); xml.OutOfElem(); xml.AddChildElem("Result"); xml.IntoElem(); xml.AddAttrib("ErrorCode", 0); xml.AddAttrib("Value", QString::fromLocal8Bit("成功").toStdString().c_str()); xml.OutOfElem(); xml.AddChildElem("SvrInfo"); xml.IntoElem(); xml.AddAttrib("UpdateXmlUrl", MessageDataMediator->m_strUpdateXMLUrl.toStdString().c_str()); xml.AddAttrib("HelpInfoXmlUrl", MessageDataMediator->m_strHelpXMLUrl.toStdString().c_str()); xml.AddAttrib("VersionCheckFileUrl", MessageDataMediator->m_strClientVersionUrl.toStdString().c_str()); xml.AddAttrib("TextMode", MessageDataMediator->m_bTextMode ? "1" : "0"); xml.OutOfElem(); netMessage.msgBuffer = packXml(&xml); netMessage.msgLen = xml.GetDoc().length(); }
bool TestMarkup::WriteTextFile() { CMarkup markup; GKString strDoc(_U("<abc>Gis_Kook</abc>")); strDoc+=_U("\n"); markup.SetDoc(strDoc); markup.AddAttrib(_U("map"), 1); markup.AddElem(_U("dddd"),_U("dd") ); markup.WriteTextFile(_U("c:/Test.xml"), markup.GetDoc()); return TRUE; }
void CXmlElement::Save(CMarkup& xml) { xml.AddElem(_name, _value); for (unsigned int i = 0; i < _attributes.size(); ++i) { xml.AddAttrib(_attributes[i].first, _attributes[i].second); } xml.IntoElem(); for (unsigned int i = 0; i < _children.size(); ++i) { _children[i]->Save(xml); } xml.OutOfElem(); }
void CDistributeMessage::packedSendMessage(NetMessage& netMessage) { CMarkup xml; xml.SetDoc("<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"); xml.AddElem("Message"); xml.AddChildElem("Header"); xml.IntoElem(); xml.AddAttrib("MsgType", "EMSG_DISTRIBUTEMSG_REQ"); xml.OutOfElem(); xml.AddChildElem("Result"); xml.IntoElem(); xml.AddAttrib("ErrorCode", 0); xml.AddAttrib("Value", QString::fromLocal8Bit("³É¹¦").toStdString().c_str()); xml.OutOfElem(); xml.AddChildElem("Info"); xml.IntoElem(); xml.AddAttrib("Msg", MessageDataMediator->m_strDistributeMsg.toStdString().c_str()); xml.AddAttrib("Time", MessageDataMediator->m_strDistributeTime.toStdString().c_str()); xml.OutOfElem(); netMessage.msgBuffer = packXml(&xml); netMessage.msgLen = xml.GetDoc().length(); }
void CSoftInstallMessage::packedSendMessage(NetMessage& netMessage) { CMarkup xml; xml.SetDoc("<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"); xml.AddElem("Message"); xml.AddChildElem("Header"); xml.IntoElem(); xml.AddAttrib("MsgType", "EMSG_SOFTINSTALL_RSP"); xml.OutOfElem(); xml.AddChildElem("Result"); xml.IntoElem(); xml.AddAttrib("ErrorCode", 0); xml.AddAttrib("Value", QString::fromLocal8Bit(m_bAddSuccess ? "添加成功" : "添加失败,XML无法解析").toStdString().c_str()); xml.OutOfElem(); xml.AddChildElem("Info"); xml.IntoElem(); xml.AddAttrib("Name", m_strName.toStdString().c_str()); //中文问题测试 yhb xml.AddAttrib("Version", m_strVersion.toStdString().c_str()); xml.OutOfElem(); netMessage.msgBuffer = packXml(&xml);; netMessage.msgLen = xml.GetDoc().length(); }
void CCliMgr::GetSysService() { SC_HANDLE schManager = OpenSCManager(NULL, NULL, SERVICE_QUERY_STATUS); if (schManager == NULL) { DWORD dwError = GetLastError(); _com_error Error(dwError); m_pLogger->WriteLog(LM_INFO, TEXT("GetSysService-OpenSCManager Error:%d:%s"), dwError, Error.ErrorMessage()); return ; } DWORD dwSize = 0, dwCount = 0; LPENUM_SERVICE_STATUS st = (LPENUM_SERVICE_STATUS)LocalAlloc(LPTR, 64*1024); LPQUERY_SERVICE_CONFIG sc = (LPQUERY_SERVICE_CONFIG)LocalAlloc(LPTR, 4 * 1024); if (!EnumServicesStatus(schManager, SERVICE_TYPE_ALL, SERVICE_ACTIVE, st, 1024*64, &dwSize, &dwCount, NULL)) { DWORD dwError = GetLastError(); _com_error Error(dwError); m_pLogger->WriteLog(LM_INFO, TEXT("EnumServicesStatus Error:%d:%s"), dwError, Error.ErrorMessage()); } CMarkup xml; xml.SetDoc("<?xml version=\"1.0\" encoding=\"gb2312\"?>\r\n"); xml.AddElem("ServiceLst"); xml.IntoElem(); for (DWORD idx=0; idx<dwCount; idx++) { SC_HANDLE hService = ::OpenService(schManager,st[idx].lpServiceName,SERVICE_QUERY_CONFIG); if(hService) { DWORD dwSize = 0; ::QueryServiceConfig(hService, sc, 4 * 1024, &dwSize); CloseServiceHandle(hService); } if (st[idx].ServiceStatus.dwCurrentState == SERVICE_RUNNING) { TCHAR buf[MAX_PATH] = {0}; _stprintf(buf, TEXT("%s %s %s)\r\n"), st[idx].lpServiceName, sc->lpBinaryPathName, st[idx].lpDisplayName); string strProcName = ProcessImagePath(sc->lpBinaryPathName); xml.AddElem("Service"); xml.AddAttrib("Name", st[idx].lpServiceName); xml.AddAttrib("Application", strProcName.c_str()); xml.AddAttrib("DisplayName", st[idx].lpDisplayName); m_pLogger->WriteLog(LM_INFO, buf); } } xml.OutOfElem(); string data=xml.GetDoc(); char *pData = NULL; int nSize = data.size() + 1024; char* buf= new char[nSize]; _packageheader* pheader = (_packageheader*)buf; InitPackage(pheader, CMD_GAME_CLIENTTOCON); CPackageHelper out(buf); out.pushDWORD(Ctrl_ViewSviInfo); out.pushString(data.c_str(), data.size()); pheader->Length = out.GetOffset(); if (!ExecCmd(buf, pheader->Length, pData, nSize, false)) m_pLogger->WriteLog(LM_INFO, "Report Ctrl_ViewSviInfo Fail."); else { m_pLogger->WriteLog(LM_INFO, "Report Ctrl_ViewSviInfo Success."); CoTaskMemFree(pData); } delete []buf; LocalFree(st); LocalFree(sc); CloseServiceHandle(schManager); }
void CCliMgr::GetSysProcess() { DWORD aProcesses[1024] = {0}, cbNeeded = 0, cProcesses = 0, MemSize = 0; if (!EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded )) { DWORD dwError = GetLastError(); _com_error Error(dwError); m_pLogger->WriteLog(LM_INFO, TEXT("GetSysProcess (EnumProcess) Error:%d:%s"), dwError, Error.ErrorMessage()); return; } cProcesses = cbNeeded / sizeof(DWORD); m_pLogger->WriteLog(LM_INFO, TEXT("Process Num:%d"), cProcesses); CMarkup xml; xml.SetDoc("<?xml version=\"1.0\" encoding=\"gb2312\"?>\r\n"); xml.AddElem("ProcessLst"); xml.IntoElem(); for (DWORD idx=0; idx<cProcesses; idx++) { TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>"); HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ, FALSE, aProcesses[idx]); if (NULL == hProcess) continue; else { if (0 == GetModuleFileNameEx(hProcess, NULL, szProcessName, MAX_PATH)) { CloseHandle( hProcess ); continue; } PROCESS_MEMORY_COUNTERS pmc = {0}; pmc.cb = sizeof(PROCESS_MEMORY_COUNTERS); if ( ::GetProcessMemoryInfo(hProcess, &pmc, sizeof(pmc))) { MemSize = pmc.WorkingSetSize; } CloseHandle( hProcess ); } string strProcName = ProcessImagePath(szProcessName); TCHAR buf[MAX_PATH] = {0}; _stprintf(buf, TEXT("%s %d (PID: %u)\r\n"), szProcessName,MemSize, aProcesses[idx]); xml.AddElem("Process"); xml.AddAttrib("Name", strProcName); xml.AddAttrib("Pid", aProcesses[idx]); xml.AddAttrib("Memory", MemSize); m_pLogger->WriteLog(LM_INFO, buf); } xml.OutOfElem(); string data=xml.GetDoc(); char *pData = NULL; int nSize = data.size() +1024; char* buf= new char[nSize]; _packageheader* pheader = (_packageheader*)buf; InitPackage(pheader, CMD_GAME_CLIENTTOCON); CPackageHelper out(buf); out.pushDWORD(Ctrl_ViewProcInfo); out.pushString(data.c_str(), data.size()); pheader->Length = out.GetOffset(); if (!ExecCmd(buf, pheader->Length, pData, nSize,false)) m_pLogger->WriteLog(LM_INFO, "Report Ctrl_ViewProcInfo Fail."); else { m_pLogger->WriteLog(LM_INFO, "Report Ctrl_ViewProcInfo Success."); CoTaskMemFree(pData); } delete []buf; }
// 初始化配置文件 int CVCheckerClsConfig::fInitConfig(void) { if (m_strConfigFile == _T("")) return CONFIG_ERR_FIND_FILE; CVCheckerClsGlobal clsGlobal; CMarkup xml; xml.SetDoc(_T("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"));//添加XML头 //获取硬件系统信息 xml.AddElem(_T("System_Info")); xml.AddAttrib(_T("Resolution"),clsGlobal.fGetScreenResolution()); xml.AddAttrib(_T("Language"),_T("zh-cn")); xml.OutOfElem(); //======800X480分辨率环境下的设置Begin====== xml.AddChildElem(_T("480X272")); xml.IntoElem(); xml.AddChildElem(_T("Defualt_Size"),430); xml.OutOfElem(); //======平台环境下的设置End====== //======多语言设置Begin====== xml.AddChildElem(_T("Language")); xml.IntoElem(); xml.AddChildElem(_T("IDOK")); xml.IntoElem(); xml.AddAttrib(_T("zh-cn"),_T("确定")); xml.AddAttrib(_T("en-us "),_T("Ok")); xml.OutOfElem(); xml.AddChildElem(_T("IDCANCEL")); xml.IntoElem(); xml.AddAttrib(_T("zh-cn"),_T("取消")); xml.AddAttrib(_T("en-us "),_T("Cancel")); xml.OutOfElem(); xml.OutOfElem(); //======多语言设置End====== //======主界面设置Begin====== xml.AddChildElem(_T("Main")); xml.IntoElem(); xml.AddAttrib(_T("BackImage"),_T("")); //======主界面设置End====== //======怠速界面设置Begin====== xml.AddChildElem(_T("Idling")); xml.IntoElem(); xml.AddAttrib(_T("BackImage"),_T("")); xml.AddChildElem(_T("LeftUp")); //左上数据信息 xml.IntoElem(); xml.AddAttrib(_T("BackImage"),_T("")); xml.AddAttrib(_T("Text"),_T("")); xml.AddAttrib(_T("DefaultData"),_T("0")); xml.OutOfElem(); xml.AddChildElem(_T("Up")); //左边数据信息 xml.IntoElem(); xml.AddAttrib(_T("BackImage"),_T("")); xml.AddAttrib(_T("Text"),_T("")); xml.AddAttrib(_T("DefaultData"),_T("0")); xml.OutOfElem(); xml.AddChildElem(_T("LeftDown")); //左下数据信息 xml.IntoElem(); xml.AddAttrib(_T("BackImage"),_T("")); xml.AddAttrib(_T("Text"),_T("")); xml.AddAttrib(_T("DefaultData"),_T("0")); xml.OutOfElem(); xml.AddChildElem(_T("RightUp")); //右上数据信息 xml.IntoElem(); xml.AddAttrib(_T("BackImage"),_T("")); xml.AddAttrib(_T("Text"),_T("")); xml.AddAttrib(_T("DefaultData"),_T("0")); xml.OutOfElem(); xml.AddChildElem(_T("Right")); //右边数据信息 xml.IntoElem(); xml.AddAttrib(_T("BackImage"),_T("")); xml.AddAttrib(_T("Text"),_T("")); xml.AddAttrib(_T("DefaultData"),_T("0")); xml.OutOfElem(); xml.AddChildElem(_T("RightDown")); //右下数据信息 xml.IntoElem(); xml.AddAttrib(_T("BackImage"),_T("")); xml.AddAttrib(_T("Text"),_T("")); xml.AddAttrib(_T("DefaultData"),_T("0")); xml.OutOfElem(); xml.OutOfElem(); //======怠速界面设置End====== xml.Save(m_strConfigFile); return 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; }