使用RapidXML读写XML文件

本文介绍了一个使用C++库rapidxml创建XML配置文件的例子。该示例展示了如何构造包含不同元素、属性和文本节点的XML结构,并将生成的XML输出到控制台和保存为文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
#include <iostream>
#include
<rapidxml/rapidxml.hpp>
#include
<rapidxml/rapidxml_utils.hpp>
#include
<rapidxml/rapidxml_print.hpp>

using namespace rapidxml;

int main()
{    
      xml_document
<> doc;  
      xml_node
<>* rot = doc.allocate_node(rapidxml::node_pi,doc.allocate_string("xml version='1.0' encoding='utf-8'"));
      doc.append_node(rot);
      xml_node
<>* node =   doc.allocate_node(node_element,"config","information");  
      xml_node
<>* color =   doc.allocate_node(node_element,"color",NULL);  
      doc.append_node(node);
      node
->append_node(color);
      color
->append_node(doc.allocate_node(node_element,"red","0.1"));
      color
->append_node(doc.allocate_node(node_element,"green","0.1"));
      color
->append_node(doc.allocate_node(node_element,"blue","0.1"));
      color
->append_node(doc.allocate_node(node_element,"alpha","1.0"));

      xml_node
<>* size =   doc.allocate_node(node_element,"size",NULL);
      size
->append_node(doc.allocate_node(node_element,"x","640"));
      size
->append_node(doc.allocate_node(node_element,"y","480"));
      node
->append_node(size);

      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.xml");
     
out << doc;

      system(
"PAUSE");
     
return EXIT_SUCCESS;
}

生成的xml文件为:
<?xml version='1.0' encoding='utf-8' ?>
<config>
    
<color>
        
<red>0.1</red>
        
<green>0.1</green>
        
<blue>0.1</blue>
        
<alpha>1.0</alpha>
    
</color>
    
<size>
        
<x>640</x>
        
<y>480</y>
    
</size>
    
<mode fullscreen="false">screen mode</mode>
</config>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值