MFC读写XML文件

本文转自:http://blog.csdn.net/nanhaizhixin/article/details/6797968

使用MSXML.DLL读写XML;

文件顶部加入

#import "msxml3.dll";

using namespace MSXML2;

//这两句作用是,在程序的文件夹下生成MSXML3.TLH和MSXML3.TLI两个文件;

---------------------------------------------------------

创建一个XML文件;

 ::CoInitialize(NULL);
 MSXML2::IXMLDOMDocumentPtr XMLDOC;
 MSXML2::IXMLDOMElementPtr XMLROOT;

 HRESULT HR = XMLDOC.CreateInstance(_uuidof(MSXML2::DOMDocument30));
 if(!SUCCEEDED(HR))
 {
  MessageBox("faild!!");
  return;
 }
 XMLROOT = XMLDOC->createElement("ROOT");
 XMLROOT->setAttribute("ID","12345");  //设置根标签的属性;
 XMLDOC->appendChild(XMLROOT);
 CString TMP;
 MSXML2::IXMLDOMElementPtr XMLNODE;
 for(int I=0;I<10;I++)
 {
  TMP.Format("%d",I);
  XMLNODE = XMLDOC->createElement((_bstr_t)("NODE"+TMP));
  XMLNODE->put_text((_bstr_t)"NODETEXTS");//设置标签的文本内容;
  XMLNODE->setAttribute("ID",(_variant_t)TMP);//设置标签的属性及内容;
  XMLNODE->setAttribute("NAME","NODENAME");
  XMLROOT->appendChild(XMLNODE);
 }
 XMLDOC->save("XMLTEST.XML");
 XMLNODE.Release();
 XMLROOT.Release();
 XMLDOC.Release();
 ::CoUninitialize();

------------------------------------------------------------------

读取一个XML;

 ::CoInitialize(NULL);
 MSXML2::IXMLDOMDocumentPtr XMLDOC;
 MSXML2::IXMLDOMElementPtr XMLROOT;
 MSXML2::IXMLDOMElementPtr XMLELEMENT;
 MSXML2::IXMLDOMNodeListPtr XMLNODES; //某个节点的所以字节点
 MSXML2::IXMLDOMNamedNodeMapPtr XMLNODEATTS;//某个节点的所有属性;
 MSXML2::IXMLDOMNodePtr XMLNODE;
 HRESULT HR = XMLDOC.CreateInstance(_uuidof(MSXML2::DOMDocument30));
 if(!SUCCEEDED(HR))
 {
  MessageBox("faild!!");
  return;
 }
 XMLDOC->load("XMLTEST.XML");
 XMLROOT = XMLDOC->GetdocumentElement();//获得根节点;
 XMLROOT->get_childNodes(&XMLNODES);//获得根节点的所有子节点;
 long XMLNODESNUM,ATTSNUM;
 XMLNODES->get_length(&XMLNODESNUM);//获得所有子节点的个数;
 CString TMP;
 TMP.Format("%d",XMLNODESNUM);
 MessageBox(TMP);
 for(int I=0;I<XMLNODESNUM;I++)
 {
  XMLNODES->get_item(I,&XMLNODE);//获得某个子节点;
  XMLNODE->get_attributes(&XMLNODEATTS);//获得某个节点的所有属性;
  XMLNODEATTS->get_length(&ATTSNUM);//获得所有属性的个数;
  for(int J=0;J<ATTSNUM;J++)
  {
   XMLNODEATTS->get_item(J,&XMLNODE);//获得某个属性;
   CString T1 = (char*)(_bstr_t)XMLNODE->nodeName;
   CString T2 = (char*)(_bstr_t)XMLNODE->text;
   MessageBox(T1+" = "+T2);
  }
  //MessageBox((_bstr_t)XMLNODE->nodeName+": "+(_bstr_t)XMLNODE->text);
 }
 return;
 //XMLDOC->save("XMLTEST.XML");
 XMLNODES.Release();
 XMLNODE.Release();
 XMLROOT.Release();
 XMLDOC.Release();
 ::CoUninitialize();

---------------------------------------------------------

总结:

XML文件档类型:MSXML2::IXMLDOMDocumentPtr;

单个元素类型:MSXML2::IXMLDOMElementPtr;

单个节点类型:MSXML2::IXMLDOMNodePtr;

所有子节点类型:MSXML2::IXMLDOMNodeListPtr;

所有属性类型:MSXML2::IXMLDOMNamedNodeMapPtr;

获得节点个数的方法:get_length();

获得所有子节点的方法:get_childNodes();

获得指定节点的方法:get_item(索引号,单个节点类型变量);

写入单个节点的文本内容方法:put_text((_bstr_t)"内容");

获得单个节点的文本内容属性:XMLNODE->text;

获得单个属性的内容属性:XMLNODEATT->text;

节点名的属性为:XMLNODE->nodeName;

---------------------------------------------------------------

XML创建文件一般过程:

 ::CoInitialize(NULL);

HRESULT HR = XMLDOC.CreateInstance(_uuidof(MSXML2::DOMDocument30));
 if(!SUCCEEDED(HR))
 {
  MessageBox("faild!!");
  return;
 }
 XMLROOT = XMLDOC->createElement("ROOT");//创建文件;

操作文件.....................

 XMLDOC->save("XMLTEST.XML");//保存文件;
 XMLNODE.Release();
 XMLROOT.Release();
 XMLDOC.Release();
 ::CoUninitialize();

------------------------------------------------------------------------------

加载文件过程序:

 ::CoInitialize(NULL);
 HRESULT HR = XMLDOC.CreateInstance(_uuidof(MSXML2::DOMDocument30));
 if(!SUCCEEDED(HR))
 {
  MessageBox("faild!!");
  return;
 }
 XMLDOC->load("XMLTEST.XML");

文件操作.........................

 XMLDOC->save("XMLTEST.XML");//可以保存对文件的修改;
 XMLNODES.Release();
 XMLNODE.Release();
 XMLROOT.Release();
 XMLDOC.Release();
 ::CoUninitialize();

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MFC是微软基于Windows操作系统开发的一套应用程序框架,用于简化Windows GUI应用程序的开发过程,其中包括控件、界面设计、消息传递等功能。而TinyXML是一个轻量级的XML解析库,用于解析和处理XML文件MFC和TinyXML可以互相结合使用,以便更方便地处理XML文件。在MFC中使用TinyXML,我们需要包含TinyXML的头文件和库文件,并将其集成到MFC项目中。然后,我们可以使用TinyXML提供的API来解析XML文件、查找XML节点、读取和修改XML节点的属性和文本内容,以及创建新的XML节点等操作。 通过结合MFC和TinyXML,我们可以在MFC应用程序中轻松地读取和解析XML配置文件,例如读取和设置应用程序的一些设置项、存储和加载用户的数据等。同时,我们也可以使用TinyXML来生成、修改和保存XML文件,例如将应用程序的数据导出为XML文件、从XML文件中加载数据等。 总之,MFC和TinyXML的结合可以使MFC应用程序更加灵活和便捷地处理XML文件。无论是读取、解析还是生成和编辑XML文件MFC和TinyXML都提供了简单易用的接口,帮助开发者在Windows平台上进行XML文件的处理。 ### 回答2: MFC(Microsoft Foundation Class)是微软公司开发的一套C++类库,用于在Windows操作系统上开发图形用户界面应用程序。它提供了一系列的封装类,简化了Windows编程的复杂性,使开发者能够更加方便地创建窗口、控件以及处理用户交互等操作。 TinyXML是一个轻量级的C++ XML解析器,它能够在内存中解析XML文件,并提供了便利的接口来访问和操作XML文档的内容。TinyXML可以很好地与MFC集成使用,可以方便地将XML文档的数据存储到MFC程序中的数据结构中,或将MFC程序中的数据保存为XML文件MFC的封装类提供了与文件操作相关的功能,而TinyXML提供了解析和操作XML文件的能力。在MFC程序中使用TinyXML,可以通过调用其提供的接口,实现读取、写入和修改XML文件的功能。例如,可以使用TinyXMLMFC程序中的数据存储为XML文档,然后在需要时将其读取回来进行处理;或者可以读取外部的XML文件,并将其内容解析并存储到MFC程序中的数据结构中,以供程序进一步使用。 MFC和TinyXML的结合可以为MFC程序添加XML处理的能力,方便地读取和存储配置文件、数据文件等内容。同时,由于TinyXML的轻量级特性,它对内存的占用较小,解析效率也较高,使得MFC程序在处理XML文件时能够更加高效和灵活。总而言之,MFC和TinyXML的结合为开发人员提供了一种简便而有效的方式来处理XML数据。 ### 回答3: MFC TinyXML是一个用于处理XML文件的小型C++库。它基于MFC框架,提供了简洁的API和易于使用的接口,使开发人员可以轻松地读取、写入和操作XML文档。 MFC TinyXML使用DOM(文档对象模型)的方式来解析XML文件。它可以将XML文档加载到内存中并创建一个层次结构的节点树,开发者可以通过遍历树状结构来访问和修改XML文件的内容。MFC TinyXML还支持XPath,这是一种通过路径来定位和选择XML节点的语言。开发人员可以使用XPath表达式来准确定位所需的节点,从而更加灵活地处理XML文档。 除了基本的读写功能,MFC TinyXML还提供了一些特性,如错误处理和UTF-8编码的支持。错误处理功能可以帮助开发人员在XML解析过程中捕获和处理错误,确保程序的稳定性。而UTF-8编码的支持则使得MFC TinyXML可以正确地处理不同语言和字符集的XML文件。 总之,MFC TinyXML是一个轻量级、方便易用的XML处理库,特别适合在MFC框架下开发的应用程序中使用。无论是读取配置文件、解析数据、还是生成XML报告,MFC TinyXML都可以帮助开发人员快速、高效地完成相关任务。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值