rapidxml是一个快速的xml库,比tinyxml快了50-100倍。本文给出创建、读取、写入xml的源码。
  由于新浪博客不支持文本文件上传,在使用下面代码需要先下载 rapidxml,关于这个库的下载地址为:官方网站: http://download.csdn.net/detail/u013767393/8419707,这个库源码一共只有四个文件分别是:
  
  关于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 ;
}
//创建一个名称为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",""));
size->append_node(doc.allocate_node(rapidxml::node_element,"y",""));
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, );
std::cout<<text<<std::endl;
std::ofstream out("../config/config1.xml");
out << doc; return ;
} //读取并修改config3.xml
int ReadAndChangeXml()
{
rapidxml::file<> fdoc("../config/config2.xml");
std::cout<<fdoc.data()<<std::endl;
rapidxml::xml_document<> doc;
doc.parse<>(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",""));
size->append_node(doc.allocate_node(rapidxml::node_element,"h",""));
std::string text;
rapidxml::print(std::back_inserter(text),doc,);
std::cout<<text<<std::endl;
std::ofstream out("../config/config2.xml");
out << doc; return ;
}

C++中rapidxml用法及例子的更多相关文章

  1. C++中rapidxml用法及例子(源码)

    rapidxml是一个快速的xml库,比tinyxml快了50-100倍.本文给出创建.读取.写入xml的源码.      由于新浪博客不支持文本文件上传,在使用下面代码需要先下载 rapidxml, ...

  2. C++中rapidxml用法

    转载:https://www.cnblogs.com/rainbow70626/p/7586713.html 解析xml是第三方库很多,例如:tingxml,这次学习一下rapidxml,rapidx ...

  3. ORACLE 中ROWNUM用法总结(转)

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

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

    本文转载自:http://www.cnblogs.com/promise-7/articles/2354077.html 一.Lock定义     lock 关键字可以用来确保代码块完成运行,而不会被 ...

  5. ORACLE 中ROWNUM用法总结!

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

  6. MVC中HtmlHelper用法大全参考

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

  7. 多线程中lock用法的经典实例

    多线程中lock用法的经典实例 一.Lock定义     lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断.它可以把一段代码定义为互斥段(critical section),互斥段在一 ...

  8. PHP中foreach()用法汇总

    这篇文章主要给大家详细介绍了PHP中foreach()用法以及相关的示例,十分的细致,有需要的小伙伴可以参考下. PHP 4 引入了 foreach 结构,和 Perl 以及其他语言很像.这只是一种遍 ...

  9. C++ 中operator用法:隐式类型转换

    [转]C++ operator两种用法 C++,有时它的确是个耐玩的东东,就比如operator,它有两种用法,一种是operator overloading(操作符重载),一种是operator c ...

随机推荐

  1. Freescle cortex-A9(完善中...)

    关键词:cortex-A9 , udoo ,mars board ; (内容参考,飞思卡尔官方网站,如有问题请联系本人) i.MX 6系列处理器推出了业界首个具有真正扩展性的多核平台,包括基于ARM® ...

  2. IGS_学习笔记09_IREP生成服务后台工具Soagenerate.sh

    2015-01-06 Created By BaoXinjian 参考:张礼军 - http://oracleseeker.com/2009/10/23/irep_service_generation ...

  3. 关于 Code First

    第一感觉还是很新鲜的,你可以自由的控制数据结构. 比如,你想象oracle那样,给每个表增加4个字段,创建人,创建时间,更新人,更新时间.完全可以创建一个父类包含着四个属性(甚至可以把四个属性作为一个 ...

  4. Input gameobject vector3 c#

    Input类中的常用方法 bool w=Input.GetKey(KeyCode.W);//检测是否按下键盘W Input.GetKeyDown(KeyCode.W);//表示检测按下时 Input. ...

  5. A+B问题 涉及EOF

    输入将包括一系列对的整数a和b,通过一空间,一对每行整数分离的.  产量 对于每对输入的整数a和b你应该输出的a和b的总和在一行,并用输出的一个行中输入每一行.  样本输入 1 5  2 3  样本输 ...

  6. Valid Number @python

    Valid Number Validate if a given string is numeric. Some examples:"0" => true" 0.1 ...

  7. 织梦CMS站点favicon.ico图标的放置

    1.在线制作一个ico图标,推荐制作网站:http://ico.55.la/.制作好后,将favicon.ico图标放在站点模板默认目录下的images文件夹里. 2.在index.htm的<h ...

  8. 常用开源Jabber(XMPP) IM服务器介绍(转)

      1. Openfire (Wildfire) 3.x授权: GPL or 商用操作系统平台:所有(使用Java开发)XMPP Jabber 协议实现情况:98%Tim 评价:安装和使用非常简单,安 ...

  9. [ActionScript 3.0] AS3动画类Tweener中滤镜的运用

    package { import caurina.transitions.Tweener; import caurina.transitions.properties.FilterShortcuts; ...

  10. 手机抓包 http tcp udp?

    1.电脑做wifi热点,手机连上后电脑上使用wireshark抓包 该方法手机无须root,并且适用于各种有wifi功能的手机(IOS.android等).平板等.只要电脑的无线网卡具有无线承载功能, ...