微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用rapidxml读写xml文件

1、rapidxml 写xml

        rapidxml::xml_document<> doc;
	rapidxml::xml_node<>* rot = doc.allocate_node(rapidxml::node_pi,doc.allocate_string("xml version='1.0' encoding='gb2312'"));  
	doc.append_node(rot);  
	rapidxml::xml_node<>* node =   doc.allocate_node(rapidxml::node_element,"config",NULL);    
	doc.append_node(node);  

	for(int i=0;i<5;i++)
	{
		rapidxml::xml_node<>* stu =   doc.allocate_node(rapidxml::node_element,"student",NULL); 
        node->append_node(stu); 

		char t[256];   
		sprintf(t,"%d",i);
		std::string itag=t;

		std::string strname="test_"+itag;
		char* pname = doc.allocate_string(strname.c_str());

		rapidxml::xml_attribute<>* pAttrType1=doc.allocate_attribute("name",pname);
        stu->append_attribute(pAttrType1);

		std::string strage="河北省小山村"+itag;
		char* page= doc.allocate_string(strage.c_str());

		pAttrType1=doc.allocate_attribute("adress",page);
		stu->append_attribute(pAttrType1);
	}
	std::string text;    
	rapidxml::print(std::back_inserter(text),doc,0);    

	std::ofstream out("config.xml");  
	out << doc;  
效果

遍历xml,修改指定属性的值

        setlocale(LC_ALL,""); // 解决中文路径问题(fstream)
	rapidxml::file<> f("config.xml");
	setlocale(LC_ALL,"C");
	rapidxml::xml_document<> doc;

	//doc.parse<0>(f.data());不包括版本号以及编码
	doc.parse<rapidxml::parse_full>(f.data());

	rapidxml::xml_node<>* pRoot = doc.first_node();
	if(pRoot == NULL)
	{
		return;
	}
	pRoot = pRoot->next_sibling();//config节点

	for(rapidxml::xml_node<>* pExeElem = pRoot->first_node(); pExeElem != NULL; pExeElem = pExeElem->next_sibling())
	{
		std::string szDstType;
		rapidxml::xml_attribute<>* pAttrType = pExeElem->first_attribute("name");
		if(pAttrType != NULL)
		{
			szDstType = pAttrType->value();
		}
		if(szDstType.compare("test_1") == 0)
		{
			rapidxml::xml_attribute<>* pAttrType1 = pExeElem->first_attribute("adress");
			std::string strpath="浙江省";
			char* pname = doc.allocate_string(strpath.c_str());
			pAttrType1->value(pname);
		}		
	}

	std::string text ;
	rapidxml::print(std::back_inserter(text),0);

	setlocale(LC_ALL,""); // 解决中文路径问题(fstream)=
	std::ofstream outfile("config2.xml");
	setlocale(LC_ALL,"C");

	outfile << doc;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类