修改xml文件的节点属性_xmlnode 修改屬性的值_GIS_wudi的博客-程序员秘密

技术标签: string  xml  测试  开源  工作  VC相关  

同样是我遇到的问题,修改xml节点属性,不需要全部来重写所有节点。来,看重点:
我用的TinyXml,其他的解析器原理应该也是一样的,有时间你们可以通过我的方法去测试一下.

比如有这么一段xml描述:

<map>
    <Area id="123">
        <Event name="liugh" script="liugh.script" />
    </Area>

</map>
我要修改为修改成以下的描述,即将Event节点的name属性值"liugh"修改为"NoName":

<map>
    <Area id="123">
        <Event name="NoName" script="liugh.script" />
    </Area>

</map>

代码来了

 std::string stdPath = "***";
 TiXmlDocument doc(stdPath .c_str());

 if(!doc.LoadFile())
 {
  return;
 }


 const TiXmlElement* map = doc.FirstChildElement("map");
 if(!map)
 {
  return;
 }

const TiXmlElement* node = map->FirstChildElement("Area");
    while(node)
    {
     int id;
     node->Attribute("id",&id);
     if((123== id) && node)  //找到符合条件的节点
     {
      TiXmlElement* xEvent= const_cast<TiXmlElement*>(node->FirstChildElement("Event"));   //去掉只读属性,否则就报错了,不同的xml解析器规则也不同,因xml而异了
      if(xEvent)
      {
          xEvent->SetAttribute("name","NoName");  //改变该节点的值

      }

   break;

}

node = node->NextSiblingElement("Area");

}

 

doc.SaveFile(strPath);   //最后别忘记保存,否则工作就白做了!
That's all!
不信吗?自己动手试试吧!

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/GIS_wudi/article/details/6777459

智能推荐

人脸识别系统在售票厅场景有哪些“刷脸”应用_人脸识别用在展厅_畅视智能的博客-程序员秘密

在车站、景区、电影院等售票厅,每天来往人员多,而且还会“黄牛党”高价售票、售假票等情况发生,使人们的消费权益得不到保证,而且容易混入可疑人员,增加场景安全隐患。为了缓解高峰期人工售票窗口的压力,提高对售票人员的认证,在售票厅场景实现人脸识别系统应用,在售票场景、人员身份识别,场景安全方面实现“刷脸”应用。售票场景“刷脸”应用人脸识别自助收银机可以在售票场景应用,在人工售票渠道的基础上增设多种售票渠道,丰富人们的购票方式。人们可以通过线上售票系统进行自助购票,通过输入身份证,进行人脸识别认证,即可进行

no such file or directory php,mkdir()提示No such file or directory错误的解决方法_二院大蛙的博客-程序员秘密

在php中使用mkdir()方法创建文件夹时报错:No such file or directory,出错代码如下:$uploads_dir = './Public/files/uploads/'.date('y-m-d',time()).'/';if (!file_exists($uploads_dir)) {mkdir($uploads_dir);}经过查询手册得知mkdir函数的具体信息如下...

Struts2 拦截器—拦截action_aaa9736的博客-程序员秘密

对于拦截器的基本使用这里我就懒得打字了,我这里就讲下如何用 Struts2 拦截器 拦截action。这是我个人的想法,如果有什么不对的,或者你们有什么更好的方法。请多多留言! 拦截器的默认拦截的方法参数是:includeMethods(要拦截的方法) 和 excludeMethods(不需要拦截的方法),多个的时候,用逗号分开;但,现实中,...

rollbackFailedOptional: verb npm-session 问题_Yasin_ddy的博客-程序员秘密

 VinayakDeshpande11 commented on 26 Jun If you have set any proxy, try removing that using: npm config rm proxy npm config rm https-proxy Then run the command. It works!!  翻译...

Android 调试桥(adb),很方便很强大_adb桥 创新点_Skypine_Lee的博客-程序员秘密

http://www.cnblogs.com/jacktu/archive/2009/02/17/1392279.html不得不承认google做的东西就是对开发人员很贴心~~~ 非常方便的调试, 可以把真机当模拟器一样debug,线程查看,对象查看。。。。你需要的只是一根连接你真机和开发机的数据线! 以下文字是转载网上的,介绍了adb这个强大的工具。 同时adb的

大数据实战项目之新闻话题分析 学习笔记(八)_爱学习的Neehong的博客-程序员秘密

文章目录第9章:Hbase分布式集群部署与设计下载HBase版本并安装HBase分布式集群的相关配置HBase相关的服务介绍及启动测试通过Shell进行数据表的操作测试HBase集群中Master-backup配置根据业务需求创建表结构第10章:Kafka分布式集群部署Kafka服务简介及版本下载安装Kafka分布式集群配置启动Kafka依赖于Zookeeper的服务并进行测试Kafka分布式服务...

随便推点

判断元素是否可以滚动scroll_怎么知道scroll 可以滚动了_zmrdlb的博客-程序员秘密

1. 前言因为要做类似于微博的懒加载功能,所以要写一个懒加载组件lazyload.js。写的过程中,有一个很坑的问题:比如一般监听整个body页面的lazyload,则需要监听window.onscroll事件。如果每屏加载10条数据,但是电脑屏幕大了,10条数据也没有占满屏幕,此时就没法触发body的滚动,就没法加载后面的数据了。此时,我需要每次请求完数据后判断一下,要监听容器是否可以滚动,

Windows下使用Visual Studio Code远程Linux_J_Xio的博客-程序员秘密

目录1. 下载安装Remote-SSH插件2. 使用ssh-keygen创建公钥私钥对3. 配置本地ssh config4. 使用1. 下载安装Remote-SSH插件安装完成后,Visual Studio Code 左下角出现如下图标2. 使用ssh-keygen创建公钥私钥对2.1 在Windows系统中打开 Windows PowerShell,使用如下命令生成密钥: ssh-keygen -t rsa -f C:\Users\WDAGUtilityAccount\.ssh\id_rsa

tensorflow和keras的关系_BE东欲的博客-程序员秘密

TensorFlow是一个开源的计算机视觉和机器学习平台,而Keras是一个用于深度学习的高阶神经网络API,它是在TensorFlow之上进行构建的。也就是说,Keras是基于TensorFlow的,使用TensorFlow作为其后端。因此,我们可以将Keras看作是TensorFlow的一个高级接口,通过它可以更方便地使用TensorFlow进行深度学习。...

vim替换字符(包括行首行尾添加字符串)_vim 多行替换 行首和行尾内容_IC后端小白的博客-程序员秘密

基本应用:将特定字符换掉特定字符后加上符号(比如/ \ _ #)全文替换在全部内容的行首添加//号注释:% s/^////g:进入命令行%s 全文^ 行首/ 匹配g到匹配的末尾个别行替换在1~50行首添加//号注释:1,50 s/^////g在1~50行首删除//号:1,50 s/^////g...

功效与样本量的计算-程序员秘密

我经常被问到这样的问题:“做假设检验时,需要的样本量是多少”, “我的实验究竟需要多少样本才有意义呢?”,这类问题可以通过功效与样本量计算来解决。什么是功效?所有检验都不可能尽善尽美,总存在这样的可能,即当原假设 (H0) 实际为真时您会根据检验结果否定原假设(I 型错误),或当原假设实际为假时您根据检验结果未能否定 H0(II 型错误)。这是因为为了估计总体均值,您必须使用随机样本,而这些随机样本都是随机抽取的。第II类错误(被坑)的概率为β,而1- β我们称之为功效。II类错误是如果有个