使用rapidxml操作xml文件(1)-写文件操作

使用rapidxml操作xml
首先上一个简单的xml写文件
如下:
#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 >
如果需要源码可以发送邮件到sdiwen1982@sohu.com索取 /*************************************** 功能:读取xml文件 参数:[in] xml文件路径 返回:true读取成功 false读取失败 **************************************/ bool ReadXml(CString sXmlPath /*xml文件路径*/); /*************************************** 功能:xml文件 参数:[in] xml文件路径 返回:true入成功 false入失败 **************************************/ bool WriteXml(CString sXmlPath /*xml文件路径*/); /*************************************** 功能:释放空间 参数:无 返回:无 **************************************/ void Release(); /*************************************** 功能:删除指定的节点 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteNode(); /*************************************** 功能:删除当前节点的所有子节点,当前节点不删除 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteAllSon(); /*************************************** 功能:根据索引删除子节点 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteSonByIndex(unsigned int nIndex); /*************************************** 功能:删除节点所有属性 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteAllAttr(); /*************************************** 功能:根据属性名删除属性 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteAttrByName(CString sName); /*************************************** 功能:根据索引删除属性 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteAttrByIndex(unsigned int nIndex); /*************************************** 功能:根据属性名设置属性值 参数:[in] sName 属性名 [in] sValue 属性值 返回:true设置成功 false设置失败 **************************************/ bool SetAttrValueByName(CString sName, CString sValue); /*************************************** 功能:插入属性 参数:[in] sName 属性名 [in] sValue 属性值 返回:true插入成功 false插入失败 **************************************/ bool InsertAttr(CString sName, CString sValue); /*************************************** 功能:设置节点值 参数:[in] sValue 属性值 返回:true设置节点值成功 false设置节点值失败 **************************************/ bool SetNodeValue(CString sValue); /*************************************** 功能:插入子节点 参数:[in] sName 节点名 返回:非空表示插入节点成功,返回插入的新节点指针 空表示插入失败 **************************************/ CXMLNode * InsertNode(CString sName); /*************************************** 功能:判断是否存在子节点 参数:[in] pNode 子节点文件指针, 返回:false没有子节点 true有子节点 **************************************/ bool HasChild(MSXML2::IXMLDOMNodePtr pNode);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值