用文件流的形式读写xml文件到MFC的树控件中

本文详细介绍了如何将XML文件中的数据读取并转换为树控件中的节点,包括XML文件的读取、特定字符串的提取、与树控件的交互以及最终将修改后的节点序列保存回XML文件的过程。

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

这是在工作时用到的问题,,,,主要就是通过读取xml中的一部分到树控件中,但是保存的时候必须是完整的读取时的xml。

1,就是读取xml文件,成为文件流。

定义一个字符串,其大小就是你读取文件的大小。

CFile  fp;
	  if (!(fp.Open(fileName,CFile::modeRead)))
	  {
		  return;
	  }
	  fp.SeekToEnd();//移动到文件尾
	  fpLength=fp.GetLength();
	  m_buffer=new char[fpLength];
	  fp.SeekToBegin();//移动到文件头
	  if(fp.Read(m_buffer,fpLength)<1){
		  fp.Close();
		  return;
	  }

然后就做一些你想要的操作,,比如增删改插啦,,,等等等等

2,取到特定的xml字符串

我用的是这个方法,,,


3,,把特定的字符串绑定到树控件中

TiXmlDocument *doc = new TiXmlDocument();
	   doc->Parse(m_SoftwaresString,0,TIXML_ENCODING_UTF8);
	   TiXmlElement *pElement=doc->RootElement();
      CrcXml(pElement,TVI_ROOT);
	  delete doc;

其中CrcXml是把节点循环放入树控件中的函数

而Parse这个函数是把文件流放入到TIXMLDOCUMENT中

4,保存文件流到XML文件中

outFile.Open(outFileName,CFile::modeWrite);
			   outFile.SeekToBegin();
			   outFile.Write(head,length_head);
			   outFile.Write((LPCTSTR)UTF8Str,UTF8Str.GetLength());
			   outFile.Write(foot,length_foot);
			   outFile.Close();

这个就是啦,,,哈哈,,其中UTF8Str就是树控件中的节点,,,

utf8str是这样得来的

TiXmlPrinter printer;
	doc->Accept(&printer);

	const CStringW UnicodeStr(printer.CStr());
	const CStringA UTF8Str=CW2A(UnicodeStr,CP_UTF8);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值