MFC读取xml文件

部署运行你感兴趣的模型镜像

本文使用微软自家的MSXML解析器,请先自行安装

加入头文件

#import <msxml3.dll> named_guids
using namespace MSXML2;

写入xml

	::CoInitialize(NULL);         //初始化组件  
	 MSXML2::IXMLDOMDocumentPtr XMLDOC;  
	 MSXML2::IXMLDOMElementPtr XMLROOT;   
  
	HRESULT HR = XMLDOC.CreateInstance(_uuidof(MSXML2::DOMDocument30));  
	 if(!SUCCEEDED(HR))  
	 {  
		  MessageBox(_T("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(_T("NODE%d"),I);
		  XMLNODE = XMLDOC->createElement((_bstr_t)(TMP));  
		  XMLNODE->put_text((_bstr_t)"NODETEXTS");//设置标签的文本内容;  
		  XMLNODE->setAttribute("ID",(_variant_t)TMP);//设置标签的属性及内容;  
		  XMLNODE->setAttribute("NAME","NODENAME");  
		  XMLROOT->appendChild(XMLNODE);  
	 }

  
	 XMLDOC->save("XMLTEST.XML");//保存文件;  

	 XMLROOT.Release();  
	 XMLDOC.Release();  
	 ::CoUninitialize(); 
  
保存好的xml内容为


读取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(_T("faild!!"));  
	  return;  
	 }  
	 XMLDOC->load("XMLTEST.XML");  
	 XMLROOT = XMLDOC->GetdocumentElement();//获得根节点;  
	 XMLROOT->get_childNodes(&XMLNODES);//获得根节点的所有子节点;  
	 long XMLNODESNUM,ATTSNUM;  
	 XMLNODES->get_length(&XMLNODESNUM);//获得所有子节点的个数;  
	 CString TMP;  
	 TMP.Format(_T("%d"),XMLNODESNUM);  
	 MessageBox(TMP);  
	 for(int I=0;I<XMLNODESNUM;I++)  
	 {  
		  XMLNODES->get_item(I,&XMLNODE);//获得某个子节点;  
		  XMLNODE->get_attributes(&XMLNODEATTS);//获得某个节点的所有属性; 
		  CString temp2 = XMLNODE->Gettext();      //读取节点内容,注意与读取节点属性的顺序,
		  MessageBox(temp2+_T("*********"));
		  XMLNODEATTS->get_length(&ATTSNUM);//获得所有属性的个数;  
		  for(int J=0;J<ATTSNUM;J++)  
		  {  
			   XMLNODEATTS->get_item(J,&XMLNODE);//获得某个属性;  
			   CString T1 = (_bstr_t)XMLNODE->nodeName;  
			   CString T2 = (_bstr_t)XMLNODE->text;  
			   MessageBox(T1+_T(" = ")+T2);  
		  }  
		  //MessageBox((_bstr_t)XMLNODE->nodeName+": "+(_bstr_t)XMLNODE->text);  
		  CString temp3 = XMLNODE->Gettext();       //虽然此处与上面读取节点内容的代码一致,但是读取的却是节点属性的最后一个值,不知道是什么原因,求大神赐教
		  MessageBox(temp3+_T("++++++"));
	 }    
	 XMLNODES.Release();  
	 XMLNODE.Release();  
	 XMLROOT.Release();  
	 XMLDOC.Release();  
	 ::CoUninitialize();  


转载于:https://www.cnblogs.com/young525/p/5873803.html

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值