1、rapidxml修改节点的value,修改之后,序列化还是原来的值,具体原因是什么,要看rapidxml是怎么实现的。如下:

void TestRapidXml()
{char* xmlContent = new char[1024];sprintf(xmlContent,"<root><head>aaa</head><body x=\"10\">bbb</body></root>");xml_document<> xmlDoc;xmlDoc.parse<0>(xmlContent);xml_node<>* body = xmlDoc.first_node()->first_node("body");body->value("ccc");xml_attribute<>* x = body->first_attribute("x");x->value("20");    string xmlStr = "";// xmlString为 <root><head>aaa</head><body x=\"20\">bbb</body></root>// 也就是说,attr的value可以修改成功,而node的value还是旧值。rapidxml::print(std::back_inserter(xmlStr),xmlDoc,0); delete []xmlContent;
}

2、怎么解决上面的问题,笨办法,既然不能修改,我就添加一个新的,删除老的。如下:

void TestRapidXml()
{char* xmlContent = new char[1024];sprintf(xmlContent,"<root><head>aaa</head><body x=\"10\">bbb</body></root>");xml_document<> xmlDoc;xmlDoc.parse<0>(xmlContent);xml_node<>* root = xmlDoc.first_node();xml_node<>* body = root->first_node("body");xml_node<>* newBody = xmlDoc.allocate_node(node_element,xmlDoc.allocate_string("body"),xmlDoc.allocate_string("ccc"));// 插入一个新的bodyroot->insert_node(body,newBody);// 复制老body的attrfor(xml_attribute<>* attr = body->first_attribute();attr!=NULL;attr=attr->next_attribute()){xml_attribute<>* copy = xmlDoc.allocate_attribute(xmlDoc.allocate_string(attr->name()),xmlDoc.allocate_string(xmlDoc.allocate_string(attr->value())));newBody->append_attribute(copy);}// 删除老的bodyroot->remove_node(body);string xmlStr = "";// xmlString为 <root><head>aaa</head><body x=\"10\">ccc</body></root>rapidxml::print(std::back_inserter(xmlStr),xmlDoc,0); delete []xmlContent;
}

3、还有一个办法,就是使用 xmlDoc.parse<parse_no_data_nodes>(xmlContent); 如下:

void TestRapidXml()
{char* xmlContent = new char[1024];sprintf(xmlContent,"<root><head>aaa</head><body x=\"10\">bbb</body></root>");xml_document<> xmlDoc;//xmlDoc.parse<0>(xmlContent);xmlDoc.parse<parse_no_data_nodes>(xmlContent);xml_node<>* body = xmlDoc.first_node()->first_node("body");body->value("ccc");xml_attribute<>* x = body->first_attribute("x");x->value("20");    string xmlStr = "";// xmlString为 <root><head>aaa</head><body x=\"20\">ccc</body></root>rapidxml::print(std::back_inserter(xmlStr),xmlDoc,0); delete []xmlContent;
}

rapidxml修改节点的值相关推荐

  1. php如何修改xml中element值,php修改xml节点的值

    今天刚刚实现的功能,找了很多资料,本来想用xpath,但是由于对xpath不甚了解.绕了个大圈后还是决定用DOMDocument来做. 在此做一个标记,以后找资料的时候也不用太辛苦. 先从数据库读取数 ...

  2. java操作xml文件--修改节点

          上一篇文章我介绍了SAX方法解析XML文件的过程,这篇文章讲解的内容是利用DOM方法修改XML文件的节点内容.       下面依然是首先贴出XML文件: <?xml version ...

  3. JQueryDOM之修改节点

    修改节点 修改文档中的元素节点可以使用多种方法:复制节点.替换节点.包裹节点 复制节点: $(element).clone() 复制节点方法能够复制节点元素,并且能够根据参数决定是否复制节点元素的行为 ...

  4. 我的世界服务器神秘修改节点,我的世界如何用NBT指令方块修改神秘时代4

    我的世界中有一种NBT指令方块可以用来方便的修改游戏,这个方块能不能用来修改神秘时代了,小编给大家带来了用NBT方块修改神秘时代4的方法,希望大家喜欢. 注:有注释标示的地方请寻找同样颜色的标示 NB ...

  5. 我的世界服务器神秘修改节点,我的世界NBT指令

    在我的世界中玩家可以用NBT指令修改游戏,从而让游戏变得更有趣味性,其中游戏中有一种神秘时代4的MOD,它的可玩性非常之高,如果用NBT指令对它进行修改的话,可以让我们更好的体验游戏,那么具体修改方法 ...

  6. 高通MSM8909平台L1系统修改LDO电压值

    文档说明 本文档以SC806-CN-00(MSM8909平台)为例,说明如何修改LDO电压值. 修改方法 以修改LDO5,从1.8V改为1.9V为例. 首先查看PM8909的IC specificat ...

  7. 数据结构,单链表讲解,并使用Java代码实现单链表增删改查【尾部添加,中间插入、修改节点、删除节点、展示链表】

    文章目录 单链表 什么是单链表,链式存储结构详解 链表的节点 头节点,头指针和首元节点 单链表的实现 1.尾部添加新节点 思路分析 代码实现 注意事项 2.按照编号插入新节点 思路分析 代码实现 注意 ...

  8. 转载非原创:修改BB 的内容,回车后修改CC 的值

    原文 http://blog.csdn.net/iamah/article/details/8438981 修改BB 的内容,回车后修改CC 的值 步骤: 1. 注册类为对类CL_GUI_ALV_GR ...

  9. LeetCode 965 Univalued Binary Tree--判断二叉树的所有节点的值是否相同--python,java解法

    题目地址:Univalued Binary Tree - LeetCode Acceptance: 67.6% Difficulty: Easy A binary tree is univalued ...

最新文章

  1. linux的文件压缩与解压缩,linux(文件压缩与解压缩)
  2. Java算法试题--猜字母/杀人游戏
  3. 2D变3D,视角随意换,神还原高清立体感,还是不用3D建模的那种 | 代码数据开源...
  4. 等值连接_干货:16种等值线图的解读与应用,用快速规律解题
  5. 介绍微服务框架Micro笔记
  6. 在ubuntu上安装,使用MQTT Mosquitto
  7. 最大公约数简便算法_求最大公约数的4种算法
  8. 【RK3399Pro学习笔记】十五、ROS中launch启动文件的使用方法
  9. linux 内核空间 sy,在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysf...
  10. HTML5清爽博客自媒体网站模板
  11. RocketMQ : UpdateTopicSubCommand command failed connect to xxx:10909 failed
  12. 《Scala机器学习》一一
  13. AD封装库转成pads封装库
  14. 数字电路为什么是低电平有效的多
  15. 南通全国计算机等级考试,南通大学2017年3月全国计算机等级考试报名通知
  16. win10拨号上网开启热点
  17. android 计步器 开发,Android计步器开发
  18. MAC 安装PS 破解
  19. [ARM+Linux] 基于全志h616外设开发笔记
  20. 操系统原理课内实习二

热门文章

  1. 《C语言及程序设计》实践参考——回文日
  2. xhan/qqbot试用
  3. Lync Server 2013 部署前端池支持NLB吗?
  4. findfirst findnext 递归查找指定目录下所有子目录下所有文件,为什么总是死机?...
  5. JAVA操作Hadoop
  6. 【转载】DL图片预处理
  7. 企业大数据运用实战案例分享
  8. 我们一直使用的管理系统oner
  9. 类似 Google Tips 页面的卡片式提示和翻转特效
  10. 使用jsp+swfupload做上传时报Upload Error: 405错误