CMarkup* ScutDataLogic::CXmlDataHandler::ParseMarkupData( CStream& dataStream ) { int nSize = dataStream.GetSize(); if (nSize == 0) { return NULL; } CMarkup* pMarkup = new CMarkup(); char* pBuffer = new char[nSize + 1]; dataStream.SetPosition(0); if (dataStream.ReadBuffer(pBuffer, nSize)) { pBuffer[nSize] = '\0'; #ifdef WIN32 if (pMarkup->DetectUTF8(pBuffer, nSize)) { std::string temp = pMarkup->UTF8ToA(pBuffer); //std::string temp = utf8ToGB2312(pBuffer, nSize); pMarkup->SetDoc(temp.c_str()); } else pMarkup->SetDoc(pBuffer, nSize); #else pMarkup->SetDoc(pBuffer, nSize); #endif } delete []pBuffer; return pMarkup; }
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 CInstrOffsetData::Save(LPCTSTR filePath) { CMarkup xml; xml.SetDoc("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"); xml.AddNode(CMarkup::MNT_ELEMENT, "root"); xml.IntoElem(); M2::iterator m2it; xml.AddNode(CMarkup::MNT_ELEMENT, "header"); xml.SetAttrib("version", 1); xml.AddNode(CMarkup::MNT_ELEMENT, "data"); xml.IntoElem(); for (m2it = m_data.begin(); m2it != m_data.end(); m2it++) { CString frequency; frequency.Format("%f", m2it->first); xml.AddNode(CMarkup::MNT_ELEMENT, "frequency"); xml.SetAttrib("value", frequency); xml.IntoElem(); M1::iterator m1it; for (m1it = m2it->second.begin(); m1it != m2it->second.end(); m1it++) { CString dbm, offset; dbm.Format("%f", m1it->first); offset.Format("%f", m1it->second); xml.AddNode(CMarkup::MNT_ELEMENT, "power"); xml.SetAttrib("dest_power", dbm); xml.SetAttrib("offset", offset); } xml.OutOfElem(); } return xml.Save(filePath); }
Vehicle::Vehicle(const char * inputXml) { CMarkup xml; xml.SetDoc (inputXml); xml.FindElem (); xml.IntoElem (); while (xml.FindElem ()) { std::string tag = xml.GetTagName (); if (tag == "vtypeidname") { vtypeidname_ = xml.GetData(); } else if (tag == "vtypeid") { vtypeid_ = atoi (xml.GetData().c_str()); } else if (tag == "color") { color_ = xml.GetData(); } else if (tag == "heat") { heat_ = atoi (xml.GetData().c_str()); } else if (tag == "location") { location_ = atoi (xml.GetData().c_str()); } else if (tag == "myear") { myear_ = atoi (xml.GetData().c_str()); } else if (tag == "id") { id_ = atoi (xml.GetData().c_str()); } } }
bool CRequestXmlMessage::treatMessage(const NetMessage& netMessage, CMessageFactory* pFactory, SocketContext* clientSocket) { //请求XML时检测客户端ID,如果不存在,执行注册ID流程 CMarkup xml; if(xml.SetDoc(netMessage.msgBuffer)) { if(xml.FindChildElem("Info")) { xml.IntoElem(); QString strId = QString::fromStdString(xml.GetAttrib("Id")); if(!DataManagerThread->IsClientExist(strId)) { DataMotion dataMotion; dataMotion.msg = EMSG_REGISTERID; dataMotion.clientInfo.id = strId; dataMotion.clientInfo.version = ""; //yhb 版本号暂时不用 DataManagerThread->AddDataMotion(dataMotion); } } } if(NULL != pFactory) { return pFactory->sendMessage(clientSocket, netMessage.msgHead); } return true; }
bool CRegisterIdMessage::treatMessage(const NetMessage& netMessage, CNetClt* pNet) { CMarkup xml; if(xml.SetDoc(netMessage.msgBuffer)) { int errCode = 0; QString errorInfo = ""; if(checkError(&xml, errCode, errorInfo)) { if(0 != errCode) { ClientLogger->AddLog(QString::fromLocal8Bit("RegisterId [%1] : \r\n[%2]").arg(errorInfo).arg(netMessage.msgBuffer)); emit NetClass->m_pMessageEventMediator->sigError(netMessage.msgHead, errorInfo); return true; } } emit NetClass->m_pMessageEventMediator->sigRegisterSuccess(); } else { ClientLogger->AddLog(QString::fromLocal8Bit("RegisterId收到的消息错误, 无法被正确解析 : [%1]").arg(netMessage.msgBuffer)); emit NetClass->m_pMessageEventMediator->sigError(netMessage.msgHead, QString::fromLocal8Bit("收到的消息错误, 无法被正确解析")); } return true; }
static int _ParseSegXml(const char *src, const LocationInfo *location, int len, int *extraLoaction, int extraLen, char *dst) { CMarkup xml; xml.SetDoc(src); if (!xml.FindElem("SEGMENTS")){ return -1; } xml.IntoElem(); if (! xml.FindElem("SEGMENT")){ return -1; } xml.IntoElem(); _doIntersect(location, len, extraLoaction, extraLen); while (xml.FindElem("COLUMN")) { int id = atoi(xml.GetAttrib("ID").c_str()); if (_isExtra(id, extraLoaction, extraLen)) { continue; } if (!isExist(id, location, len)) { xml.RemoveElem(); } } xml.OutOfElem(); xml.OutOfElem(); strcpy(dst, xml.GetDoc().c_str()); return 0; }
BOOL CViewGameDlg::OnInitDialog() { CDialog::OnInitDialog(); m_lstCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); if (m_bViewCmpAllGame) { m_lstCtrl.InsertColumn(0, "GID", LVCFMT_LEFT, 80); m_lstCtrl.InsertColumn(1, "游戏名", LVCFMT_LEFT, 140); m_lstCtrl.InsertColumn(2, "更新时间", LVCFMT_LEFT, 150); } else { m_lstCtrl.InsertColumn(0, "计算机", LVCFMT_LEFT, 150); m_lstCtrl.InsertColumn(1, "更新时间", LVCFMT_LEFT, 180); } std::string ErrInfo; CConsoleDlg* pDlg = reinterpret_cast<CConsoleDlg*>(AfxGetMainWnd()); if (!pDlg->m_pDbMgr->ViewGameInfo(gid, m_bViewCmpAllGame, ErrInfo)) { AfxMessageBox(ErrInfo.c_str()); OnCancel(); return TRUE; } CMarkup xml; xml.SetDoc(ErrInfo); if (m_bViewCmpAllGame) { if (i8desk::IntoXmlNode(xml, "/status/gameLst/")) { while (xml.FindElem("Task")) { std::string gid = xml.GetAttrib("gid"); int nIdx = m_lstCtrl.InsertItem(m_lstCtrl.GetItemCount(), gid.c_str()); DWORD ver = atoi(xml.GetAttrib("version").c_str()); m_lstCtrl.SetItemText(nIdx, 1, pDlg->GetNameFromGID(atoi(gid.c_str())).c_str()); m_lstCtrl.SetItemText(nIdx, 2, i8desk::MakeTimeString(ver).c_str()); } } } else { if (i8desk::IntoXmlNode(xml, "/status/ipLst/")) { while (xml.FindElem("Task")) { DWORD ip = atoi(xml.GetAttrib("ip").c_str()); int nIdx = m_lstCtrl.InsertItem(m_lstCtrl.GetItemCount(), i8desk::MakeIpString(ip).c_str()); DWORD ver = atoi(xml.GetAttrib("version").c_str()); m_lstCtrl.SetItemText(nIdx, 1, i8desk::MakeTimeString(ver).c_str()); } } } this->CenterWindow(); return TRUE; }
Shop::ShopItem::ShopItem(MCD_STR xmlstring, bool only_sell_legal, bool increase_price_with_illegality) : price_(0), only_sell_legal_(only_sell_legal), increase_price_with_illegality_(increase_price_with_illegality), description_defined_(false) { CMarkup xml; xml.SetDoc(xmlstring); xml.FindElem(); xml.IntoElem(); while (xml.FindElem()) { std::string tag = xml.GetTagName(); if (tag == "class") { if (xml.GetData() == "WEAPON") itemclass_ = WEAPON; else if (xml.GetData() == "CLIP") itemclass_ = CLIP; else if (xml.GetData() == "ARMOR") itemclass_ = ARMOR; else if (xml.GetData() == "LOOT") itemclass_ = LOOT; } else if (tag == "type") itemtypename_ = xml.GetData(); else if (tag == "description") { description_ = xml.GetData(); description_defined_ = true; } else if (tag == "price") price_ = atoi(xml.GetData().c_str()); else if (tag == "sleeperprice") sleeperprice_ = atoi(xml.GetData().c_str()); else if (tag == "letter") { letter_ = xml.GetData()[0]; if (97 <= letter_ && letter_ <= 122) //Check it is a letter. letter_defined_ = true; else if (65 <= letter_ && letter_ <= 90) { letter_ += 32; letter_defined_ = true; } else if (letter_ == '!') //Allow special character. letter_defined_ = true; } } }
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; }
Item::Item(const std::string& inputXml) { CMarkup xml; xml.SetDoc(inputXml); xml.FindElem(); xml.IntoElem(); while(xml.FindElem()) { std::string tag=xml.GetTagName(); if(tag=="itemtypename") itemtypename_=xml.GetData(); else if(tag=="itemtypeid") itemtypeid_=atoi(xml.GetData()); else if(tag=="number") number_=atoi(xml.GetData()); } }
LootType::LootType(MCD_STR xmlstring) : ItemType(xmlstring), stackable_(true), no_quick_fencing_(false), cloth_(false) { CMarkup xml; xml.SetDoc(xmlstring); xml.FindElem(); xml.IntoElem(); while (xml.FindElem()) //Loop over all the elements inside the loottype element. { std::string element = xml.GetTagName(); if (element == "stackable") { int b = stringtobool(xml.GetData()); if (b == 1) stackable_ = true; else if (b == 0) stackable_ = false; /*else errorlog << "Invalid boolean value for loot type " << idname << "::stackable: " << xml.GetData() << std::endl;*/ } else if (element == "no_quick_fencing") { int b = stringtobool(xml.GetData()); if (b == 1) no_quick_fencing_ = true; else if (b == 0) no_quick_fencing_ = false; /*else errorlog << "Invalid boolean value for loot type " << idname << "::no_quick_fencing: " << xml.GetData() << std::endl;*/ } else if (element == "cloth") { int b = stringtobool(xml.GetData()); if (b == 1) cloth_ = true; else if (b == 0) cloth_ = false; /*else errorlog << "Invalid boolean value for loot type " << idname << "::cloth: " << xml.GetData() << std::endl;*/ } } }
static int _ParseXml(const char *src, std::map<std::string, std::string> &mapValue) { CMarkup xml; xml.SetDoc(src); if (!xml.FindElem("SEGMENTS")){ return -1; } xml.IntoElem(); while (xml.FindElem("SEGMENT")){ std::string szSource = xml.GetAttrib("SOURCE"); mapValue[szSource] = xml.GetAttrib("VALUE"); } xml.OutOfElem(); return 0; }
Money::Money(const char * inputXml) : Item(inputXml) { CMarkup xml; xml.SetDoc (inputXml); xml.FindElem (); xml.IntoElem (); while (xml.FindElem ()) { std::string tag = xml.GetTagName (); if (tag == "amount") amount_ = atoi(xml.GetData().c_str()); } }
ClipType::ClipType(MCD_STR xmlstring) : ItemType(xmlstring), ammo_(1) { CMarkup xml; xml.SetDoc(xmlstring); xml.FindElem(); xml.IntoElem(); while(xml.FindElem()) //Loop over all the elements inside the cliptype element. { std::string element=xml.GetTagName(); if(element=="ammo") ammo_=atoi(xml.GetData()); /*else errorlog << "Unknown element for clip type " << idname() << ": " << element << endl;*/ } }
Weapon::Weapon(const char * inputXml) : Item(inputXml) { CMarkup xml; xml.SetDoc (inputXml); xml.FindElem (); xml.IntoElem (); while (xml.FindElem ()) { std::string tag = xml.GetTagName (); if (tag == "loaded_cliptype") loaded_cliptype_ = xml.GetData(); else if (tag == "ammo") ammo_ = atoi(xml.GetData().c_str()); } }
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; }
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; }
void db_leos::DownloadLyrics(window_config *wcfg, lyric_data* data) { data->Text = _T(""); tstring xmltext; if (!ReadInternetTextFromUrl(xmltext, _T("FOO_UIE_LYRICS2"), data->Source, wcfg->cfg_timeout, wcfg)) return ; tstring info_text; CMarkup xml; if (!xml.SetDoc(xmltext.c_str())) return ; if (xml.FindChildElem(_T("lyric"))) { xml.IntoElem(); if (xml.FindChildElem(_T("text"))) { xml.IntoElem(); info_text = xml.GetData(); xml.OutOfElem(); } xml.OutOfElem(); } data->Text = info_text; data->Text = ReplaceString(_T("\r"), _T(""), data->Text); data->Text = ReplaceString(_T("\n"), _T("\r\n"), data->Text); data->IsLoaded = true; if (data->Text.find(_T("[")) != tstring::npos) data->IsTimestamped = true; else data->IsTimestamped = false; }
/* Used by load() to create items of the correct class. */ Item* create_item(const std::string& inputXml) { Item* it = NULL; CMarkup xml; xml.SetDoc(inputXml); xml.FindElem(); string itemclass = xml.GetTagName(); if (itemclass == "clip") it = new Clip(inputXml); else if (itemclass == "weapon") it = new Weapon(inputXml); else if (itemclass == "armor") it = new Armor(inputXml); else if (itemclass == "loot") it = new Loot(inputXml); else if (itemclass == "money") it = new Money(inputXml); return it; }
bool ESDBXMLResponse::ParseXMLString(CString sXML, ESDBXMLRequestMan* pReqMan){ CMarkup xmlDoc; if( !xmlDoc.SetDoc(sXML) ) return false; if( !xmlDoc.FindElem() ) return false; StringToIntArray* pReqTypes = ESDBXMLRequest::GetRequestTypes(); RequestType reqType = (RequestType)pReqTypes->GetValue(xmlDoc.GetTagName()); if( reqType == RequestType::db_unknown ) return false; if( !xmlDoc.IntoElem() ) return false; // Fill params array. ###### if( m_pParams ) delete m_pParams; m_pParams = new StringToStringArray(); while( xmlDoc.FindElem() ){ m_pParams->Add(xmlDoc.GetTagName(), xmlDoc.GetData()); } // ######################### int nReqId = atoi(m_pParams->GetValue("req_id")); ESDBXMLRequest* req = pReqMan->GetRequestById(nReqId); if( req == NULL || req->GetResponse() != NULL ) return false; // Attach to request object. m_pRequest = req; req->SetType (reqType); req->SetResponse(this); return true; }
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 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(); }
bool CSoftInstallMessage::treatMessage(const NetMessage& netMessage, CMessageFactory* pFactory, SocketContext* clientSocket) { m_bAddSuccess = false; CMarkup xml; if(xml.SetDoc(netMessage.msgBuffer)) { if(xml.FindChildElem("Info")) { xml.IntoElem(); QString strId = QString::fromStdString(xml.GetAttrib("Id")); m_strName = QString::fromStdString(xml.GetAttrib("Name")); m_strVersion = QString::fromStdString(xml.GetAttrib("Version")); /*&& 判断当前提交的软件名称,版本号是否与软件列表里的一致 */ if(DatabaseManager::Instance()->IsSoftwareExist(m_strName, m_strVersion) && !DataManagerThread->IsSoftInstallInfoExist(strId, m_strName, m_strVersion)) { //接上,软件列表为共用列表,不从数据库判断,节省效率 yhb DataMotion dataMotion; dataMotion.msg = netMessage.msgHead; dataMotion.clientInfo.id = strId; dataMotion.softwareInfo.name = m_strName; dataMotion.softwareInfo.version = m_strVersion; DataManagerThread->AddDataMotion(dataMotion); } xml.OutOfElem(); m_bAddSuccess = true; } } if(NULL != pFactory) { return pFactory->sendMessage(clientSocket, netMessage.msgHead); } return true; }
/* 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; }
CreatureType::CreatureType(const std::string& xmlstring) : age_(18,57), alignment_public_mood_(true), attribute_points_(40), gender_liberal_(GENDER_RANDOM), gender_conservative_(GENDER_RANDOM), infiltration_(0), juice_(0), money_(20,40) { for(int i=0; i<ATTNUM; i++) attributes_[i].set_interval(1,10); id_=number_of_creaturetypes++; CMarkup xml; xml.SetDoc(xmlstring); xml.FindElem(); idname_=xml.GetAttrib("idname"); if(!len(idname_)) { idname_ = "LACKS IDNAME "+tostring(id_); xmllog.log("Creature type "+tostring(id_)+" lacks idname."); } type_=creaturetype_string_to_enum(idname_); xml.IntoElem(); // Loop over all the elements inside the creaturetype element. while(xml.FindElem()) { std::string element = xml.GetTagName(); if (element == "alignment") { std::string alignment = xml.GetData(); if (alignment == "PUBLIC MOOD") alignment_public_mood_ = true; else if (alignment == "LIBERAL") { alignment_ = ALIGN_LIBERAL; alignment_public_mood_ = false; } else if (alignment == "MODERATE") { alignment_ = ALIGN_MODERATE; alignment_public_mood_ = false; } else if (alignment == "CONSERVATIVE") { alignment_ = ALIGN_CONSERVATIVE; alignment_public_mood_ = false; } else xmllog.log("Invalid alignment for " + idname_ + ": " + alignment); } else if (element == "age") { std::string age = xml.GetData(); if (age == "DOGYEARS") age_.set_interval(2,6); else if (age == "CHILD") age_.set_interval(7,10); else if (age == "TEENAGER") age_.set_interval(14,17); else if (age == "YOUNGADULT") age_.set_interval(18,35); else if (age == "MATURE") age_.set_interval(20,59); else if (age == "GRADUATE") age_.set_interval(26,59); else if (age == "MIDDLEAGED") age_.set_interval(35,59); else if (age == "SENIOR") age_.set_interval(65,94); else assign_interval(age_, age, idname_, element); } else if (element == "attribute_points") assign_interval(attribute_points_, xml.GetData(), idname_, element); else if (element == "attributes") { while(xml.FindChildElem()) { int attribute = attribute_string_to_enum(xml.GetChildTagName()); if (attribute != -1) assign_interval(attributes_[attribute], xml.GetChildData(), idname_, element); else xmllog.log("Unknown attribute in " + idname_ + ": " + xml.GetTagName()); } } else if (element == "juice") assign_interval(juice_, xml.GetData(), idname_, element); else if (element == "gender") { int gender = gender_string_to_enum(xml.GetData()); if (gender != -1 && gender != GENDER_WHITEMALEPATRIARCH) gender_liberal_ = gender_conservative_ = gender; else xmllog.log("Invalid gender for " + idname_ + ": " + xml.GetData()); } else if (element == "infiltration") assign_interval(infiltration_, xml.GetData(), idname_, element); else if (element == "money") assign_interval(money_, xml.GetData(), idname_, element); else if (element == "skills") { while(xml.FindChildElem()) { int skill = skill_string_to_enum(xml.GetChildTagName()); if (skill != -1) assign_interval(skills_[skill], xml.GetChildData(), idname_, element); else xmllog.log("Unknown skill for " + idname_ + ": " + xml.GetChildTagName()); } } else if (element == "armor") { if (getarmortype(xml.GetData()) != -1) armortypes_.push_back(xml.GetData()); else xmllog.log("Invalid armor type for " + idname_ + ": " + xml.GetData());; } else if (element == "weapon") { //xml.SavePos("creature"); weapons_and_clips_.push_back(WeaponsAndClips(xml, idname_)); //xml.RestorePos("creature"); } else if (element == "encounter_name") encounter_name_ = xml.GetData(); else if (element == "type_name") type_name_ = xml.GetData(); else xmllog.log("Unknown element for " + idname_ + ": " + element); } if (!len(type_name_)) { xmllog.log("type_name not defined for " + idname_ + "."); type_name_ = "UNDEFINED"; } // If no weapon type has been given then use WEAPON_NONE. if (!len(weapons_and_clips_)) weapons_and_clips_.push_back(WeaponsAndClips("WEAPON_NONE", 1, "NONE", 0)); // If no armor type has been given then use ARMOR_NONE. if (!len(armortypes_)) armortypes_.push_back("ARMOR_NONE"); }
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; }
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; }