void PRFProperty::parseElement(TiXmlElement *elem) { DEBUG(5, PRFProperty, "In parseElement."); id = elem->Attribute("id"); dataType->id = CORBA::string_dup(id.c_str()); type = elem->Attribute("type"); name = elem->Attribute("name"); mode = elem->Attribute("mode"); parseKind(elem); parseAction(elem); }
int evt_GetLastAction(char*apikey, Action * action) { connect(); char * urlPath = createGetLastActionURLPath(action->thng); char * header = createHeader(apikey); int responseCode = HTTP_Get(socket, EVRYTHNG_API_HOST, urlPath, header, respHeader, ARRAY_SIZE(respHeader), respBody, ARRAY_SIZE(respBody),200); if (responseCode == 200) { parseAction(action, respBody); } disconnect(); free(urlPath); free(header); return responseCode; }
LEElement *LEElementPool::parseExpression(const char * line) { LEElement *first = NULL; LEElement *last = NULL; while (true) { line = getNextToken(line, parsingBuffer); if (line == NULL) { /** * No more tokens in this line */ return first; } LEElement *n = next(); if (isNumeric(parsingBuffer)) { n->init(LE_NUMERIC_VALUE, atoff(parsingBuffer)); } else { le_action_e action = parseAction(parsingBuffer); if (action == LE_UNDEFINED) { /** * Cannot recognize token */ warning((obd_code_e) 0, "unrecognized [%s]", parsingBuffer); return NULL; } n->init(action); } if (first == NULL) { first = n; last = n; } else { last->next = n; last = last->next; } } return first; }
ComplexUserActionList ComplexUserActionParser::parseScenarios() { ComplexUserActionList scenarios; QDir dir; dir.current().cdUp(); dir.cdUp(); dir.setPath("userAction/userScenario"); QStringList filters; filters << "*.xml"; QStringList const scenarioFileNames = dir.entryList(filters); QStringList scenarioFiles; for (const QString &actionFileName: scenarioFileNames) { scenarioFiles << dir.absolutePath() + "/" + actionFileName; } for (const QString &actionFile: scenarioFiles) { ComplexUserAction *scenario = parseAction(actionFile, true); if (scenario != nullptr) { scenarios << scenario; } } return scenarios; }
ComplexUserActionList ComplexUserActionParser::parse() { ComplexUserActionList complexActions; QDir dir; dir.current().cdUp(); dir.cdUp(); dir.setPath("userAction/complexUserAction/XMLcomplexUserActions"); QStringList filters; filters << "*.xml"; QStringList const complexActionFileNames = dir.entryList(filters); QStringList complexActionFiles; for (const QString &actionFileName: complexActionFileNames) { complexActionFiles << dir.absolutePath() + "/" + actionFileName; } for (const QString &actionFile: complexActionFiles) { ComplexUserAction *complexUserAction = parseAction(actionFile); if (complexUserAction != nullptr) { complexActions << complexUserAction; } } return complexActions; }
void Parser::parseAction(QXmlStreamReader &xml, Action *parent) { while (!xml.atEnd() && !xml.hasError()) { QXmlStreamReader::TokenType token = xml.readNext(); if (token == QXmlStreamReader::StartElement) { //parse action.. Action *a; QXmlStreamAttributes a_attr = xml.attributes(); if (xml.name().toString() == "move") { a = new Move(a_attr.value("range").toString(), a_attr.value("rule").toString()); } else { a = new Response(a_attr.value("rule").toString()); } parent->addAction(a); parseAction(xml, a); } if (token == QXmlStreamReader::EndElement && (xml.name().toString() == "move" || xml.name().toString() == "resp")) { //strategy end.. return ; } } }
/** * \brief 读取攻城脚本 * * \param rushID 脚本id * \param rushDelay 攻城延迟时间 * \param countryID 目标国家id * \return 读取是否成功,不成功则不可用 */ bool Rush::loadRushData(DWORD rushID,DWORD rushDelay,DWORD countryID) { zXMLParser xml; if (!xml.initFile(Seal::global["confdir"] +"city_rush.xml")) { Xlogger->error("打开city_rush.xml失败"); return false; } xmlNodePtr root = xml.getRootNode("info"); if (!root) return false; xmlNodePtr rushNode = xml.getChildNode(root,"rush"); while (rushNode) { DWORD id=0; xml.getNodePropNum(rushNode,"id",&id,sizeof(id)); if (rushID==id) { xml.getNodePropNum(rushNode,"boss",&bossID,sizeof(bossID)); xml.getNodePropStr(rushNode,"bossname",bossName,sizeof(bossName)); xml.getNodePropStr(rushNode,"name",rushName,sizeof(rushName)); xml.getNodePropNum(rushNode,"cleardelay",&clearDelay,sizeof(clearDelay)); xml.getNodePropNum(rushNode,"lasttime",&lasttime,sizeof(bossID)); zXMLParser parser = zXMLParser(); parser.initFile(Seal::global["confdir"] + "scenesinfo.xml"); xmlNodePtr root2 = parser.getRootNode("ScenesInfo"); if (0==root2) return false; xmlNodePtr infoNode = parser.getChildNode(root2,"countryinfo"); if (0==infoNode) return false; char str[MAX_NAMESIZE]; xmlNodePtr dataNode = parser.getChildNode(infoNode,"country"); while (dataNode) { DWORD id=0; parser.getNodePropNum(dataNode,"id",&id,sizeof(id)); if (id==countryID) { parser.getNodePropStr(dataNode,"name",str,sizeof(str)); break; } dataNode = parser.getNextNode(dataNode,"country"); } if (!dataNode) { Xlogger->debug("读取攻城数据时,未找到目标国家 id=%d",countryID); return false; } strncpy(mapName,str,sizeof(mapName)); DWORD mapID; xml.getNodePropNum(rushNode,"mapid",&mapID,sizeof(mapID)); infoNode = parser.getChildNode(root2,"mapinfo"); if (0==infoNode) return false; dataNode = parser.getChildNode(infoNode,"map"); while (dataNode) { DWORD id=0; parser.getNodePropNum(dataNode,"mapID",&id,sizeof(id)); if (id==mapID) { parser.getNodePropStr(dataNode,"name",str,sizeof(str)); break; } dataNode = parser.getNextNode(dataNode,"map"); } if (!dataNode) { Xlogger->debug("读取攻城数据时,未找到目标地图 id=%d",mapID); return false; } strcat(mapName,"·"); strcat(mapName,str); dataNode = xml.getChildNode(rushNode,"boss"); while (dataNode) { bossDefine bd; xml.getNodePropNum(dataNode,"x",&bd.pos.x,sizeof(bd.pos.x)); xml.getNodePropNum(dataNode,"y",&bd.pos.y,sizeof(bd.pos.y)); xml.getNodePropNum(dataNode,"num",&bd.num,sizeof(bd.num)); xml.getNodePropNum(dataNode,"region",&bd.region,sizeof(bd.region)); xml.getNodePropNum(dataNode,"script",&bd.script,sizeof(bd.script)); bossVector.push_back(bd); dataNode = xml.getNextNode(dataNode,"boss"); } dataNode = xml.getChildNode(rushNode,"servant"); while (dataNode) { servantDefine sd; xml.getNodePropNum(dataNode,"id",&sd.id,sizeof(sd.id)); xml.getNodePropNum(dataNode,"num",&sd.num,sizeof(sd.num)); xml.getNodePropNum(dataNode,"rate",&sd.rate,sizeof(sd.rate)); xml.getNodePropNum(dataNode,"interval",&sd.interval,sizeof(sd.interval)); servantVector.push_back(sd); dataNode = xml.getNextNode(dataNode,"servant"); } dataNode = xml.getChildNode(rushNode,"notify"); if (dataNode) xml.getNodePropStr(dataNode,"str",text,sizeof(text)); char t[128]; std::string::size_type pos=0; dataNode = xml.getChildNode(rushNode,"starttext"); if (dataNode) { xml.getNodePropStr(dataNode,"str",t,sizeof(t)); startText = t; pos = startText.find("time",0); if (pos!=std::string::npos) startText.replace(pos,4,"%s"); } dataNode = xml.getChildNode(rushNode,"endtext"); if (dataNode) { xml.getNodePropStr(dataNode,"str",t,sizeof(t)); endText = t; pos = endText.find("time",0); if (pos!=std::string::npos) endText.replace(pos,4,"%s"); } dataNode = xml.getChildNode(rushNode,"phase"); phaseDefine pd; pd.action = RUSH_RELIVE; pd.lasttime = rushDelay; setPhaseTime(pd.lasttime*1000); phaseVector.push_back(pd); while (dataNode) { char action[32]; bzero(action,sizeof(action)); bzero(pd.say,sizeof(pd.say)); xml.getNodePropStr(dataNode,"action",action,sizeof(action)); pd.action = parseAction(action); if (pd.action) { xml.getNodePropNum(dataNode,"x",&pd.pos.x,sizeof(pd.pos.x)); xml.getNodePropNum(dataNode,"y",&pd.pos.y,sizeof(pd.pos.y)); xml.getNodePropNum(dataNode,"region",&pd.region,sizeof(pd.region)); xml.getNodePropStr(dataNode,"say",pd.say,sizeof(pd.say)); xml.getNodePropNum(dataNode,"lasttime",&pd.lasttime,sizeof(pd.lasttime)); xml.getNodePropNum(dataNode,"id",&pd.x,sizeof(pd.x)); xml.getNodePropNum(dataNode,"num",&pd.y,sizeof(pd.y)); xml.getNodePropNum(dataNode,"script",&pd.z,sizeof(pd.z)); phaseVector.push_back(pd); } dataNode = xml.getNextNode(dataNode,"phase"); } pd.action = RUSH_END; bzero(pd.say,sizeof(pd.say)); phaseVector.push_back(pd); //Xlogger->info("读取攻城数据成功:name=%s mapname=%s boss=%d servant=%d phase=%d",rushName,mapName,bossVector.size(),servantVector.size(),phaseVector.size()); return true; break; } rushNode = xml.getNextNode(rushNode,"rush"); } Xlogger->info("读取攻城数据失败:rushID=%d countryID=%d",rushID,countryID); return false; }