初次使用rapidxml往xml文件中循环写入内容,以下是错误演示:

bool StudentMgr::save ()
{///创建文件操作对象rapidxml::xml_document<> doc;myNode* root    =   doc.allocate_node(rapidxml::node_pi,doc.allocate_string("xml version='1.0' encoding='gb2312'"));doc.append_node(root);myNode* StudentInformation      =   doc.allocate_node(rapidxml::node_element,"StudentInformation",nullptr);myNode* StudentList             =   doc.allocate_node(rapidxml::node_element,"StudentList",nullptr);doc.append_node(StudentInformation);StudentInformation->append_node(StudentList);MapStudent::iterator it;char str[1024];const char* name;const char* sex;const char* id;const char* telnumber;int iter=0;///取出容器内容for (it = _students.begin (); it != _students.end (); it++){name          =         it->second._name.data();sex           =         it->second._sex.data();id            =         it->second._id.data();telnumber     =         it->second._telnumber.data();sprintf_s(str,"%s %s %s %s",name,sex,id,telnumber);StudentList->append_node(doc.allocate_node(rapidxml::node_element, "Student",str));}///打开文件并写入xml信息std::string text;rapidxml::print(back_inserter(text), doc, 0);std::ofstream out(_fileName);out<<doc;return true;
}

代码中未定义的变量为类的成员变量已在容器中赋值,就不再赘述,以上代码能通过编译也能运行,本函数是想实现将容器中的成员变量循环赋值给student节点,然后重定义该xml文件内容;但真实效果却是student的每一行都为容器中最后的元素的值。

正确的代码只需要将上图代码中的

StudentList->append_node(doc.allocate_node(rapidxml::node_element, "Student",str));

修改为

StudentList->append_node(doc.allocate_node(rapidxml::node_element, "Student", doc.allocate_string(str, 1024)));

其中巨细暂时还没有探究,现只解决了这个问题,希望有了解的大佬可以讲解一下,不胜感激。

rapidxml往xml文件循环写入内容相关推荐

  1. java解析xml文件并写入Excel表

    解析xml文件并写入Excel表 类似于如下格式的xml数据,解析之后将数据写入Excel中 <?xml version="1.0" encoding="UTF-8 ...

  2. 1万条xml文件的写入,附加杂类知识

    写这段代码目的:这次需要将集搜客爬取到的10482个XML文件逐个写入TXT文件中,将xml中的标题结点的值作为TXT文件的名字,XML文件结构如下 话不多说,我们放代码: package xmlTo ...

  3. ASP.NET创建文件并写入内容

    本文从最基本的操作开始,解释在ASP.NET中文件处理的概念,包括如从一个文件中读取内容.如何向一个文件中写入内容和如何删除一个文件. 前面已经提到,要想在ASP.NET 页面中进行文件处理,必须要有 ...

  4. python把print写入文件_Python中用print方法向文件中写入内容

    Python中用print方法向文件中写入内容 2013-02-02| 一个小功能,我就是想用print功能实现,不想用write 1 2 3 4 5 6import os os.chdir(&quo ...

  5. 文件——创建文件并写入内容

    package main import ( "os" "fmt" "bufio" ) /* 基本介绍 func OpenFile(name ...

  6. 编程随笔-Java | 03.使用FileWriter向文件中写入内容

    文章目录 1.FileWriter类 构造方法 常用API 2.使用示例:创建文件并写入内容 参考文章 1.FileWriter类 构造方法 public FileWriter(File file); ...

  7. 将XML文件中的内容批量修改

    批量修改VOC数据集中xml标签文件的标签名称 第一版:每次都只单一xml文件中的内容进行修改,较为麻烦 import os import xml.etree.ElementTree as ET#程序 ...

  8. Linux 快速创建文件并写入内容

    Linux 创建文件并写入内容 1.自动创建 test.txt 文件 2.自动写入 "Raspberry" > 创建并写入 >> 追加写入 其他方法: vi vi ...

  9. Java创建文件并写入内容

    以下代码可以创建一个文件,并使用FileWriter向文件中写入内容,若路径不存在则自动创建路径,若文件已经存在,则不再创建 public void createFile() throws IOExc ...

  10. XML文件的写入和读取(解析)基于DOM4J工具

    这两天做了个天气的小应用,需要用到百度的天气api,获取到的信息是一个xml文档. 所以就从网上查了一下相关的知识,就是关于怎么去解析出来xml文件的信息. 先放一个我自己写的例子,加了点注释,贴这里 ...

最新文章

  1. 第一次使用Android Studio时你应该知道的一切配置
  2. python之np.var()函数解析
  3. POJ1364基本的查分约束问题
  4. JS基础--条件判断(3)
  5. linux内核启动失败,裁剪后montavistalinux内核 nfs启动失败
  6. 微课|中学生可以这样学Python(1.4节):安装扩展库
  7. 一道简单而又容易出错的题目
  8. hdu 6108 小C的倍数问题
  9. [转]CG编程概念 ,及CG编译器与VC6.0集成方法
  10. android 设为锁屏壁纸,修改设置Android锁屏壁纸为系统默认的锁屏壁纸
  11. 基于JAVA-公益劳动招募管理系统-计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  12. DoNet6新特性 PriorityQueue 优先队列终于来啦~
  13. 干货!自监督学习在推荐系统中的应用
  14. android edittext怎样获取输入的内容,如何获取edittext中输入的内容?
  15. android代码禁用软键盘,如何强制禁用软键盘
  16. Kafka 集群扩容、分区重新分配、SparkStreaming自适应上游kafka topic partition数目变化
  17. 给你一台大疆无人机,你能用来做点啥?(二)-----——倾斜摄影建模
  18. 物理工程建模和AI量化建模的时空跳跃
  19. html中尖括号写法,HTML中如何显示特殊字符(尖括号 “”,)?
  20. C2C、B2B、B2C解释(转)

热门文章

  1. C语言正交表测试用例,测试用例设计之正交表法和配对测试法
  2. python毕业设计作品基于django框架 校园失物招领系统毕设成品(6)开题答辩PPT
  3. 功率放大器ADS仿真实例
  4. PDF转HTML常用方法分享
  5. 总结:Oracle 递归查询
  6. python1到20的阶乘求和_Python的阶乘求和
  7. python爬虫毕业论文大纲参考模板_毕业论文大纲参考模板
  8. 点云配准(CloudCompare软件)
  9. Typora上使用Latex语法(持续更新)
  10. 【超实用精选】设计师必备的设计资源网站合集