使用RapidXML读写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 >
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Delphi是一种编程语言和集成开发环境,它提供了读写XML文件的功能。在Delphi中,可以使用TXMLDocument组件来处理XML文件。 要读取XML文件,首先需要在代码中创建TXMLDocument对象,并通过其LoadFromFile方法将XML文件加载到内存中。加载完成后,可以通过访问TXMLDocument对象的DocumentElement属性来获取XML文件的根元素。使用DocumentElement属性返回的是一个IXMLNode接口类型的对象,可以通过其子节点和属性来访问XML文件中的数据。 对于写入XML文件,同样需要创建TXMLDocument对象,并通过其LoadFromFile方法加载或创建一个XML文件。然后,可以通过代码中的赋值或添加子节点的方式来设置XML文档的结构和数据。最后,使用TXMLDocument对象的SaveToFile方法将修改后的XML文档保存到磁盘上。 在读写XML文件时,可能还需要使用到IXMLNode接口的其他方法和属性。例如,使用ChildNodes属性可以获取当前节点的所有子节点,使用Attributes属性可以获取当前节点的所有属性,使用Text属性可以获取或设置当前节点的文本内容。 除了基本的读写功能,Delphi还提供了其他用于处理XML的组件和库函数。例如,可以使用XPath来定位XML文件中的节点,使用XSLT进行XML数据的转换,使用XMLDataBinding创建与XML结构对应的对象模型等等。 总的来说,Delphi提供了丰富和方便的功能来读写XML文件,使开发人员可以轻松地处理XML数据。无论是对于简单的XML文件操作还是复杂的XML数据处理,都可以通过Delphi的强大的XML处理功能来实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值