TiXmlDocument 解析 C++ vc xml元素文本修改

金山界面库读取指定配置项
xml配置:
<dlg pos="33,0,-0,-0" id="6500" crbg="FFFFFF">  
	<dlg pos="0,0,-0,30" crbg="FFFFFF">  
		<imgbtn pos="0,0,-0,-0" id="6501" class="P" posfont-x="10" posfont-y="0">AAAAAAA</imgbtn>  
	</dlg>  
	<dlg pos="0,30,-0,60" crbg="FFFFFF">  
		<imgbtn pos="0,0,-0,-0" id="6502" class="P" posfont-x="10" posfont-y="0">BBBBBBB</imgbtn>                 
	</dlg>  
	<dlg pos="0,60,-0,90" crbg="FFFFFF">  
		<imgbtn pos="0,0,-0,-0" id="6503" class="P" posfont-x="10" posfont-y="0">CCCCCCC</imgbtn>         
	</dlg>  
	<dlg pos="0,90,-0,120" crbg="FFFFFF">  
		<imgbtn pos="0,0,-0,-0" id="6504" class="P" posfont-x="10" posfont-y="0">DDDDDDD</imgbtn>         
	</dlg>          
 </dlg>  
<img src="https://img-blog.csdn.net/20140827163544848?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmlibGU1MjExMjU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
代码解析:c++
LPCTSTR pstr = strXMLPath.GetBuffer();  
if (findfile.FindFile(pstr))  
{  
	TiXmlDocument xmlDoc;  
	CStringA strXml;  

	// 所读文件的大小 ==   
	long nsizefile = findfile.GetFileSize();  
	strXml = xmlDoc.ReadXML(CW2A(strXMLPath), nsizefile + 1); // 读取保存后的文档内容 ==  
	CString strtemp = CA2W(strXml, CP_UTF8);                  // 字符串xml文档格式化
		xmlDoc.Parse(strXml, NULL, TIXML_ENCODING_UTF8);  
	}  

	if (xmlDoc.Error())  
	{  
		return ;  
	}  

	TiXmlElement *pXmlRootElem = xmlDoc.RootElement();  
	if (NULL != pXmlRootElem)  
	{         
		TiXmlNode* pRootChild = pXmlRootElem->FirstChild();  
		if (pRootChild != NULL)  
		{  
			TiXmlNode* pChild = pRootChild->FirstChild();  
			LPCSTR pstrNode = pChild->Value();                                                       
			TiXmlNode* pLastChild = pRootChild->LastChild(); 
			LPCSTR pstrdlgNode = pLastChild->Value();     

			for( TiXmlNode* pNodeChild = pLastChild->FirstChild(); NULL != pNodeChild; pNodeChild = pNodeChild->NextSibling())  
			{  
				TiXmlNode* pCurNode = pNodeChild->FirstChild();  
				if (pCurNode != NULL)  
				{     
					LPCSTR lpNode = pCurNode->Value();                    // imgbtn ==        

					LPCSTR lpstrAttrval = pCurNode->ToElement()->Attribute("abbreviation");     

					TiXmlElement * pElement = pCurNode->ToElement();  
					TiXmlNode    * pXmlText = pElement->FirstChild();    // 文本看出一种特殊的节点 ==   
					LPCSTR        lpstrtext = pXmlText->Value(););       // 取出文本,如:AAAA,BBB,CCC,DDDDD.  
					CString         strtemp = CA2W(lpstrtext, CP_UTF8);  
					if (strtemp.Find(FLAG_MAIN_MENU_POPUP) > 0)          // 清除所有的默认标示 ==    
					{  
						strtemp.Replace(FLAG_MAIN_MENU_POPUP, _T(""));  

						pXmlText->SetValue(CT2A(strtemp, CP_UTF8));  
					}  

					if (_strcmpi(lpstrAttrval, Unicode2Ansi(strSoftID)) == 0)// 重新添加当前设置为默认的 ==   
					{  
						strtemp += FLAG_MAIN_MENU_POPUP;  
//                              TiXmlText strtext = CW2A(strtemp);  
//                              pElement->ReplaceChild(pCurNode, strtext                       
						pXmlText->SetValue(CT2A(strtemp, CP_UTF8));  

					}  

				}  
			}  
		}  
	}  

//          // 保存文件 ==     
	xmlDoc.SaveFile(CW2A(strXMLPath));  

	strXml = _T("");  
	strXml = xmlDoc.ReadXML(CW2A(strXMLPath), nsizefile + 1); // 读取保存后的文档内容 ==  

	if (!SetXml(strXml))  
	{  
		return ;  
	}  

	xmlDoc.Clear();


 
 
 
 
 

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值