转自 C++中rapidxml用法及例子:https://blog.csdn.net/zxxSsdsd/article/details/16887561?utm_source=blogxgwz8

rapidxml是一个快速的xml库,比tinyxml快了50-100倍。本文给出创建、读取、写入xml的源码。

由于新浪博客不支持文本文件上传,在使用下面代码需要先下载 rapidxml,关于这个库的下载地址为:官方网站: http://rapidxml.sourceforge.net/,这个库源码一共只有四个文件分别是:


关于raidxml资料相关的介绍网上有很多资料,在这里我就不重复介绍了,下面直接贴代码:

#include "stdafx.h"

#include "stdlib.h"

#include <iostream>

//下面三个文件是本段代码需要的库文件

#include "rapidxml/rapidxml.hpp"

#include "rapidxml/rapidxml_utils.hpp"

#include "rapidxml/rapidxml_print.hpp"

int CreateXml();

int ReadAndChangeXml();

int _tmain(int argc, _TCHAR* argv[])

{

//测试用例

CreateXml();

//测试用例

ReadAndChangeXml();

system("pause");

return 0;

}

//创建一个名称为config2.xml文件

int CreateXml()

{

rapidxml::xml_document<> doc;

rapidxml::xml_node<>* rot = doc.allocate_node(rapidxml::node_pi,doc.allocate_string("xml version='1.0' encoding='utf-8'"));

doc.append_node(rot);

rapidxml::xml_node<>* node = doc.allocate_node(rapidxml::node_element,"config","information");

doc.append_node(node);

rapidxml::xml_node<>* color = doc.allocate_node(rapidxml::node_element,"color",NULL);

node->append_node(color);

color->append_node(doc.allocate_node(rapidxml::node_element,"red","0.1"));

color->append_node(doc.allocate_node(rapidxml::node_element,"green","0.1"));

color->append_node(doc.allocate_node(rapidxml::node_element,"blue","0.1"));

color->append_node(doc.allocate_node(rapidxml::node_element,"alpha","1.0"));

rapidxml::xml_node<>* size = doc.allocate_node(rapidxml::node_element,"size",NULL);

size->append_node(doc.allocate_node(rapidxml::node_element,"x","640"));

size->append_node(doc.allocate_node(rapidxml::node_element,"y","480"));

node->append_node(size);

rapidxml::xml_node<>* mode = doc.allocate_node(rapidxml::node_element,"mode","screen mode");

mode->append_attribute(doc.allocate_attribute("fullscreen","false"));

node->append_node(mode);

std::string text;

rapidxml::print(std::back_inserter(text), doc, 0);

std::cout<<text<<std::endl;

std::ofstream out("../config/config1.xml");

out << doc;

return 0;

}

//读取并修改config3.xml

int ReadAndChangeXml()

{

rapidxml::file<> fdoc("../config/config2.xml");

std::cout<<fdoc.data()<<std::endl;

rapidxml::xml_document<> doc;

doc.parse<0>(fdoc.data());

std::cout<<doc.name()<<std::endl;

//! 获取根节点

rapidxml::xml_node<>* root = doc.first_node();

std::cout<<root->name()<<std::endl;

//! 获取根节点第一个节点

rapidxml::xml_node<>* node1 = root->first_node();

std::cout<<node1->name()<<std::endl;

rapidxml::xml_node<>* node11 = node1->first_node();

std::cout<<node11->name()<<std::endl;

std::cout<<node11->value()<<std::endl;

//! 修改之后再次保存

rapidxml::xml_node<>* size = root->first_node("size");

size->append_node(doc.allocate_node(rapidxml::node_element,"w","1"));

size->append_node(doc.allocate_node(rapidxml::node_element,"h","1"));

std::string text;

rapidxml::print(std::back_inserter(text),doc,0);

std::cout<<text<<std::endl;

std::ofstream out("../config/config2.xml");

out << doc;

return 0;

}

C++中rapidxml用法及例子相关推荐

  1. sweetalert2中ajax用法,SweetAlert2例子

    SweetAlert2例子 带有 确定和取消的 弹框1: 点击这里 带有 确定和取消的 弹框2: 点击这里 带有 展示 标签内容 的弹框: 点击这里 带有定位 和 消失时间的 弹框: 点击这里 自定义 ...

  2. MVC中HtmlHelper用法大全

    MVC中HtmlHelper用法大全参考 解析MVC中HtmlHelper控件7个大类中各个控件的主要使用方法(1) 2012-02-27 16:25 HtmlHelper类在命令System.Web ...

  3. JavaScript中foreach()用法及使用的坑

    JavaScript中foreach()用法及使用的坑 JavaScript中foreach是用于遍历数组的方法,将遍历到的元素传递给回调函数,遍历的数组不能是空的要有值. foreach 语法: [ ...

  4. c# 多线程中lock用法的经典实例

    一.Lock定义     lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断.它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行, ...

  5. Unity c#中Attribute用法详解

    举两个例子,在变量上使用[SerializeFiled]属性,可以强制让变量进行序列化,可以在Unity的Editor上进行赋值. 在Class上使用[RequireComponent]属性,就会在C ...

  6. php return直接输出,PHP中return用法详细解读

    原标题:PHP中return用法详细解读 在大部分编程语言中,return关键字可以将函数的执行结果返回,PHP中return的用法也大同小异,对初学者来说,掌握PHP中return的用法也是学习PH ...

  7. jquery中cookie用法实例详解(获取,存储,删除等)

    这篇文章主要介绍了jquery中cookie用法,结合实例详细分析了jQuery操作cookie的获取,存储,删除等操作,并附带了Jquery操作Cookie记录用户查询过信息实现方法,需要的朋友可以 ...

  8. ORACLE 中ROWNUM用法总结!

    ORACLE 中ROWNUM用法总结! 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=) ...

  9. as3 转义html,html和xml中的转义字符在Flash as3中的用法浅析

    html和xml中的转义字符在Flash as3中的用法浅析 來源:互聯網  2009-01-04 23:28:37  評論 在as3中使用特殊字符的时候,不小心就会出现错误,要么字符没有被显示,要么 ...

  10. python管道怎么使用_python中管道用法入门实例

    python中管道用法入门实例 本文实例讲述了python中管道用法.分享给大家供大家参考.具体如下: #!coding=utf-8 import multiprocessing def consum ...

最新文章

  1. python冒泡排序与常用数学计算
  2. 多线程中的使用共享变量的问题
  3. python软件开发-哪个开发软件可以写python啊,VS可以么?
  4. 可迭代对象、迭代器与生成器
  5. cve-bin-tool 证书错误的解决方法
  6. 团队工作室展示官网源码带后台-源团V1.0版本
  7. php apache停止工作,phpStudy Apache 经常出现停止工作
  8. 口音与方言语音识别研究进展
  9. 对程序员来说最难的是写代码吗?
  10. 打开一个php网页出现2个ip,php根据ip地址查地区
  11. 电路与模拟电子技术(作业答案)
  12. 无线网首选dns服务器怎么设置,怎么设置无线路由器dns
  13. OpenStreetMap 2020年全球数据导入benchmark
  14. 我和王争学设计模式|原型模式
  15. 关于财务业务模型的思考
  16. Web课程设计——小米商城页面实战(html,css,js实现)
  17. 向服务器写入文件失败,向远程服务器写入文件
  18. 聚米优选:“文学式vlog”主播,这么猛的吗?
  19. CPT104 Operating System Concepts Note
  20. [电子设计大赛]射频宽带放大器设计报告

热门文章

  1. M6(面试)-01-牛客网Java面试题集锦
  2. 开源跨平台GUI库Fltk在Deepin Linux下的使用
  3. 零基础【绘画板绘】SAI仿水墨笔刷教程(干货)
  4. 使用webgl(three.js)搭建一个3D智慧园区、3D建筑,3D消防模拟,web版3D,bim管理系统——第四课
  5. 无人驾驶全局路径规划之RRT算法
  6. 医院常用系统简称说明(HIS 、LIS、PACS等)
  7. C语言程序100例之C#版-019
  8. 手游反抗战兴起,《原神》打响“起义“第一枪
  9. JAVA输入输出流实现文件复制
  10. Win10华硕atk驱动怎么安装_雨林木风win10系统U盘怎么安装