日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++中rapidxml用法及例子

發布時間:2024/8/1 c/c++ 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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用法及例子的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。