rapidxml

//下面三个文件是本段代码需要的库文件
#include "rapidxml/rapidxml.hpp"       
#include "rapidxml/rapidxml_utils.hpp"
#include "rapidxml/rapidxml_print.hpp"
//读取并修改config3.xml
int ReadAndChangeXml()
{
	rapidxml::file<> fdoc("E:/canDel/ConsoleApplication1/x64/Release/test.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<>* node11q = node11->next_sibling();
	std::cout << node11q->name() << std::endl;
	std::cout << node11q->value() << std::endl;

	//! 修改之后再次保存
	//rapidxml::xml_node<>* size = root->first_node("size");
	rapidxml::xml_node<>* sizex = root->first_node();
	sizex->append_node(doc.allocate_node(rapidxml::node_element, "wxxw", "1344"));
	sizex->append_node(doc.allocate_node(rapidxml::node_element, "h234e4e", "1xx"));
	std::string text;
	rapidxml::print(std::back_inserter(text), doc, 0);
	std::cout << text << std::endl;
	//std::ofstream out("../config/config2.xml");
	std::ofstream out("E:/canDel/ConsoleApplication1/x64/Release/test11.xml");
	out << doc;

	return 0;
}

下面是创建XML代码:


//创建一个名称为test22.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("./ljtconfig/ljtconfig1.xml");
	std::ofstream out("E:/canDel/ConsoleApplication1/x64/Release/test22.xml");
	out << doc;

	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值