实际项目使用例程(一)
来源:互联网 发布:网页图片批量下载软件 编辑:程序博客网 时间:2024/06/05 18:14
作者:shmilxu
个人主页:http://blog.csdn.net/shmilxu
实现功能:完成对string类型的xml遍历,复制,修改,删除等操作。
原xml:
<action id="1"> <parameter groups="1" stationid="44030028" deviceid="00201" devicename="RXMS855" funcid="15"> <group index="0"> <item name="antenna" value="LF Antenna(25MHz-1000MHz)" /> <item name="startfrequ" value="885MHz" /> <item name="stopfrequ" value="889MHz" /> <item name="startfreqd" value="930MHz" /> <item name="stopfreqd" value="934MHz" /> <item name="step" value="25kHz" /> <item name="detector" value="average" /> <item name="gainctrl" value="fast" /> <item name="attenuation" value="0" /> <item name="scanmode" value="highquality" /> <item name="reflevel" value="-20dBm" /> </group> </parameter> <other_param /></action>修改后xml:
<action id="1"> <parameter groups="2" stationid="44030028" deviceid="00201" devicename="RXMS855" funcid="15"> <group index="0"> <item name="antenna" value="LF Antenna(25MHz-1000MHz)" /> <item name="startfreq" value="885MHz" /> <item name="stopfreq" value="889MHz" /> <item name="step" value="25kHz" /> <item name="detector" value="average" /> <item name="gainctrl" value="fast" /> <item name="attenuation" value="0" /> <item name="scanmode" value="highquality" /> <item name="reflevel" value="-20dBm" /> </group> <group index="1"> <item name="antenna" value="LF Antenna(25MHz-1000MHz)" /> <item name="startfreq" value="930MHz" /> <item name="stopfreq" value="934MHz" /> <item name="step" value="25kHz" /> <item name="detector" value="average" /> <item name="gainctrl" value="fast" /> <item name="attenuation" value="0" /> <item name="scanmode" value="highquality" /> <item name="reflevel" value="-20dBm" /> </group> </parameter> <other_param /></action>封装的函数:
string CDevCtrl::ThransformGRTFSParam(const char* oldParam){string strnew;TiXmlDocument lActionXML;lActionXML.Parse(oldParam);TiXmlNode* lpActionNode = lActionXML.RootElement();TiXmlNode* lpParameterNode = lpActionNode->FirstChild();// 循环复制group以及下面的所有标签 [2016-5-4]TiXmlNode* lpGroupNode = lpParameterNode->FirstChild("group");TiXmlElement* lpNewGroupEle = new TiXmlElement("group");if (NULL == lpNewGroupEle){return "";}lpParameterNode->LinkEndChild(lpNewGroupEle);lpNewGroupEle->SetAttribute("index","1");TiXmlNode* lpItemNode = NULL;while(lpItemNode = lpGroupNode->IterateChildren("item",lpItemNode)){TiXmlElement* lpNewItemEle = new TiXmlElement("item");if (NULL == lpNewItemEle){return "";}lpNewGroupEle->LinkEndChild(lpNewItemEle);TiXmlAttribute* lpAttribute = NULL;for(lpAttribute = lpItemNode->ToElement()->FirstAttribute();lpAttribute;lpAttribute = lpAttribute->Next()){lpNewItemEle->SetAttribute(lpAttribute->Name(),lpAttribute->Value());}}// 将groups的值改成2 [2016-5-4]TiXmlAttribute* lpParamAtt = NULL;for (lpParamAtt = lpParameterNode->ToElement()->FirstAttribute();lpParamAtt;lpParamAtt = lpParamAtt->Next()){string name = lpParamAtt->Name();if (name == "groups"){lpParamAtt->SetValue("2");break;}}// 删除两个group中的item中不用的开始和终止频率 [2016-5-4]lpGroupNode = lpParameterNode->FirstChild("group");lpItemNode = NULL;bool bfind = false;while(lpItemNode = lpGroupNode->IterateChildren("item",lpItemNode)){TiXmlAttribute* lpAttribute = NULL;for(lpAttribute = lpItemNode->ToElement()->FirstAttribute();lpAttribute;lpAttribute = lpAttribute->Next()){string value = lpAttribute->Value();if (value == "startfreqd"){lpGroupNode->ToElement()->RemoveChild(lpItemNode);bfind = true;break;}}if (bfind){break;}}lpGroupNode = lpParameterNode->FirstChild("group");lpItemNode = NULL;bfind = false;while(lpItemNode = lpGroupNode->IterateChildren("item",lpItemNode)){TiXmlAttribute* lpAttribute = NULL;for(lpAttribute = lpItemNode->ToElement()->FirstAttribute();lpAttribute;lpAttribute = lpAttribute->Next()){string value = lpAttribute->Value();if (value == "stopfreqd"){lpGroupNode->ToElement()->RemoveChild(lpItemNode);bfind = true;break;}}if (bfind){break;}}lpGroupNode = lpParameterNode->LastChild("group");lpItemNode = NULL;bfind = false;while(lpItemNode = lpGroupNode->IterateChildren("item",lpItemNode)){TiXmlAttribute* lpAttribute = NULL;for(lpAttribute = lpItemNode->ToElement()->FirstAttribute();lpAttribute;lpAttribute = lpAttribute->Next()){string value = lpAttribute->Value();if (value == "startfrequ"){lpGroupNode->ToElement()->RemoveChild(lpItemNode);bfind = true;break;}}if (bfind){break;}}lpGroupNode = lpParameterNode->LastChild("group");lpItemNode = NULL;bfind = false;while(lpItemNode = lpGroupNode->IterateChildren("item",lpItemNode)){TiXmlAttribute* lpAttribute = NULL;for(lpAttribute = lpItemNode->ToElement()->FirstAttribute();lpAttribute;lpAttribute = lpAttribute->Next()){string value = lpAttribute->Value();if (value == "stopfrequ"){lpGroupNode->ToElement()->RemoveChild(lpItemNode);bfind = true;break;}}if (bfind){break;}}// 将目前的频率名字改成目标频率名字 [2016-5-4]lpGroupNode = lpParameterNode->FirstChild("group");lpItemNode = NULL;while(lpItemNode = lpGroupNode->IterateChildren("item",lpItemNode)){TiXmlAttribute* lpAttribute = NULL;for(lpAttribute = lpItemNode->ToElement()->FirstAttribute();lpAttribute;lpAttribute = lpAttribute->Next()){string name = lpAttribute->Name();string value = lpAttribute->Value();if (name == "name" && value == "startfrequ"){lpAttribute->SetValue("startfreq");break;}if (name == "name" && value == "stopfrequ"){lpAttribute->SetValue("stopfreq");break;}}}lpGroupNode = lpParameterNode->LastChild("group");lpItemNode = NULL;while(lpItemNode = lpGroupNode->IterateChildren("item",lpItemNode)){TiXmlAttribute* lpAttribute = NULL;for(lpAttribute = lpItemNode->ToElement()->FirstAttribute();lpAttribute;lpAttribute = lpAttribute->Next()){string name = lpAttribute->Name();string value = lpAttribute->Value();if (name == "name" && value == "startfreqd"){lpAttribute->SetValue("startfreq");break;}if (name == "name" && value == "stopfreqd"){lpAttribute->SetValue("stopfreq");break;}}}//lActionXML.Print();// 将结果转换成string返回 [2016-5-4]TiXmlPrinter printer;lActionXML.Accept(&printer);strnew = printer.CStr();return strnew;}
0 0
- 实际项目使用例程(一)
- libevent项目分析(一) -- 准备阶段 .例程分析
- 实际项目中使用Postsharp
- httpwebrequest/httpwebresponse实际项目使用
- 使用Gson解析Json字符串(实际项目)
- JAVA8 新特性实际使用总结(一)
- Android 实际项目架构提炼开篇一
- deeplearning4j例程(一) CSVExample
- log4j在web项目中的实际使用
- log4j在web项目中的实际使用
- Nhibernate在实际项目中的使用
- boost在实际项目中的使用
- Nodejs, MemCacheD 在实际项目中的使用
- boost在实际项目中的使用
- boost 在实际项目中的使用
- Spring AOP实际项目中使用案例
- 实际项目中页面标签的使用
- Git 在实际项目中的使用
- JavaMail系列(六) 搜索邮件
- AS400如何检查谁删除了文件
- UESTC 485 Game(康托,BFS)
- Gson
- javaweb学习总结(四十六)——Filter(过滤器)常见应用
- 实际项目使用例程(一)
- 第十六课程序的测试和修改——C#计算器编程教学
- Android Dev Intro - Android Thread Intro
- Maven 那点事儿
- iOS获取手机内部音乐列表
- android的进程/线程的管理
- DevSecOps简介(二)
- C++先序遍历与中序遍历生成二叉树 后序遍历与中序遍历生成二叉树
- 使用visual studio code开发Go程序