• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++中rapidxml用法及例子

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

转自:http://blog.sina.com.cn/s/blog_a459dcf501019393.html

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

关于这个库的下载地址为:官方网站: http://rapidxml.sourceforge.net/
#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;
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C语言const发布时间:2022-07-14
下一篇:
【C#】上机实验七发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap