C++中rapidxml用法及例子
转自 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用法及例子相关推荐
- sweetalert2中ajax用法,SweetAlert2例子
SweetAlert2例子 带有 确定和取消的 弹框1: 点击这里 带有 确定和取消的 弹框2: 点击这里 带有 展示 标签内容 的弹框: 点击这里 带有定位 和 消失时间的 弹框: 点击这里 自定义 ...
- MVC中HtmlHelper用法大全
MVC中HtmlHelper用法大全参考 解析MVC中HtmlHelper控件7个大类中各个控件的主要使用方法(1) 2012-02-27 16:25 HtmlHelper类在命令System.Web ...
- JavaScript中foreach()用法及使用的坑
JavaScript中foreach()用法及使用的坑 JavaScript中foreach是用于遍历数组的方法,将遍历到的元素传递给回调函数,遍历的数组不能是空的要有值. foreach 语法: [ ...
- c# 多线程中lock用法的经典实例
一.Lock定义 lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断.它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行, ...
- Unity c#中Attribute用法详解
举两个例子,在变量上使用[SerializeFiled]属性,可以强制让变量进行序列化,可以在Unity的Editor上进行赋值. 在Class上使用[RequireComponent]属性,就会在C ...
- php return直接输出,PHP中return用法详细解读
原标题:PHP中return用法详细解读 在大部分编程语言中,return关键字可以将函数的执行结果返回,PHP中return的用法也大同小异,对初学者来说,掌握PHP中return的用法也是学习PH ...
- jquery中cookie用法实例详解(获取,存储,删除等)
这篇文章主要介绍了jquery中cookie用法,结合实例详细分析了jQuery操作cookie的获取,存储,删除等操作,并附带了Jquery操作Cookie记录用户查询过信息实现方法,需要的朋友可以 ...
- ORACLE 中ROWNUM用法总结!
ORACLE 中ROWNUM用法总结! 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=) ...
- as3 转义html,html和xml中的转义字符在Flash as3中的用法浅析
html和xml中的转义字符在Flash as3中的用法浅析 來源:互聯網 2009-01-04 23:28:37 評論 在as3中使用特殊字符的时候,不小心就会出现错误,要么字符没有被显示,要么 ...
- python管道怎么使用_python中管道用法入门实例
python中管道用法入门实例 本文实例讲述了python中管道用法.分享给大家供大家参考.具体如下: #!coding=utf-8 import multiprocessing def consum ...
最新文章
- python冒泡排序与常用数学计算
- 多线程中的使用共享变量的问题
- python软件开发-哪个开发软件可以写python啊,VS可以么?
- 可迭代对象、迭代器与生成器
- cve-bin-tool 证书错误的解决方法
- 团队工作室展示官网源码带后台-源团V1.0版本
- php apache停止工作,phpStudy Apache 经常出现停止工作
- 口音与方言语音识别研究进展
- 对程序员来说最难的是写代码吗?
- 打开一个php网页出现2个ip,php根据ip地址查地区
- 电路与模拟电子技术(作业答案)
- 无线网首选dns服务器怎么设置,怎么设置无线路由器dns
- OpenStreetMap 2020年全球数据导入benchmark
- 我和王争学设计模式|原型模式
- 关于财务业务模型的思考
- Web课程设计——小米商城页面实战(html,css,js实现)
- 向服务器写入文件失败,向远程服务器写入文件
- 聚米优选:“文学式vlog”主播,这么猛的吗?
- CPT104 Operating System Concepts Note
- [电子设计大赛]射频宽带放大器设计报告
热门文章
- M6(面试)-01-牛客网Java面试题集锦
- 开源跨平台GUI库Fltk在Deepin Linux下的使用
- 零基础【绘画板绘】SAI仿水墨笔刷教程(干货)
- 使用webgl(three.js)搭建一个3D智慧园区、3D建筑,3D消防模拟,web版3D,bim管理系统——第四课
- 无人驾驶全局路径规划之RRT算法
- 医院常用系统简称说明(HIS 、LIS、PACS等)
- C语言程序100例之C#版-019
- 手游反抗战兴起,《原神》打响“起义“第一枪
- JAVA输入输出流实现文件复制
- Win10华硕atk驱动怎么安装_雨林木风win10系统U盘怎么安装