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

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>  

代码解析: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)
		{
			return ;
		}
		 
		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)
			{
				continue ;
			}
			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();







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值