美食网站策划书,做食品的采购员常用网站,重庆住房和城乡建设部网站的打印准考证,建设房地产网站经过今天尝试MFC解析XML串#xff0c;也算有了不少收获#xff0c;总结一下。 我是使用的CMarkup类对XML进行操作。 CMarkup好象都是先从一个xml文件里面把内容读出来#xff0c;再进行解析#xff0c;搞得我恨不得要把我的CString写到xml文件里面… 经过今天尝试MFC解析XML串也算有了不少收获总结一下。 我是使用的CMarkup类对XML进行操作。 CMarkup好象都是先从一个xml文件里面把内容读出来再进行解析搞得我恨不得要把我的CString写到xml文件里面再取出来了。 如果需要直接读取CString可以直接用 CMarkup::SetDoc方法。 最后其他的方法转载别人的使用例子写得很全。来自http://hi.baidu.com/yxifu/blog/item/fa1569225bda52a44623e8f0.html (一) 先讲一下XML中的物殊字符手动填写时注意一下。 字符 字符实体 amp;或 apos;或 gt;或 lt;或 quot;或 (二) CMarkup类的源代码。 这是目前的最新版本 这是官网示例文件取出里面的Markup.cpp和Markup.h导入你的工程里面CMarkup类就可以用了 下载地址http://www.firstobject.com/Markup83.zip (三) 创建一个XML文档。 CMarkup xml;xml.AddElem( ORDER );xml.AddChildElem( ITEM );xml.IntoElem();xml.AddChildElem( SN, 132487A-J );xml.AddChildElem( NAME, crank casing );xml.AddChildElem( QTY, 1 );xml.Save(c:\\UserInfo.xml); 效果如下 ORDERITEMSN132487A-J/SNNAMEcrank casing/NAMEQTY1/QTY/ITEM/ORDER (四) 浏览特定元素 CMarkup xml;
xml.Load(UserInfo.xml);while ( xml.FindChildElem(ITEM) )
{xml.IntoElem();xml.FindChildElem( SN );CString csSN xml.GetChildData();xml.FindChildElem( QTY );int nQty atoi( xml.GetChildData() );xml.OutOfElem();
} (五)增加元素和属性 添加在最后面,使用的是AddElem;添加在最前面,使用InsertElem。 CMarkup xml; xml.Load(c:\\UserInfo.xml);
xml.AddElem( ORDER );
xml.IntoElem(); // 进入 ORDERxml.AddElem( ITEM );xml.IntoElem(); // 进入 ITEMxml.AddElem( SN, 4238764-A ); //添加元素xml.AddElem( NAME, bearing );//添加元素xml.AddElem( QTY, 15 );//添加元素xml.OutOfElem(); // 退出 ITEM xml.AddElem( SHIPMENT );
xml.IntoElem(); // 进入 SHIPMENT
xml.AddElem( POC );//添加元素
xml.SetAttrib( type, non-emergency);//添加属性
xml.IntoElem(); // 进入 POC
xml.AddElem( NAME, John Smith);//添加元素
xml.AddElem( TEL, 555-1234);//添加元素
xml.Save(c:\\UserInfo.xml); 效果如下 ORDERITEMSN132487A-J/SNNAMEcrank casing/NAMEQTY1/QTY/ITEMITEMSN4238764-A/SNNAMEbearing/NAMEQTY15/QTY/ITEMSHIPMENTPOC typenon-emergencyNAMEJohn Smith/NAMETEL555-1234/TEL/POC/SHIPMENT/ORDER (六) 修改元素和属性 如将POC中的属性type改成change; 元素TEL改成123456789 CMarkup xml; if (xml.Load(UserInfo.xml)) { CString strUserID _T(); xml.ResetMainPos(); if (xml.FindChildElem(SHIPMENT)) { xml.IntoElem(); if (xml.FindChildElem(POC)) { xml.IntoElem(); CString str_typexml.GetAttrib(type); MessageBox(str_type); xml.SetAttrib(type,change); strUserID xml.GetData(); if (xml.FindChildElem(TEL)) { xml.IntoElem(); xml.SetData(123456789); xml.Save(UserInfo.xml); return; } } } } (七)删除元素 删除SN132487A-J的项目。 CMarkup xml; if (xml.Load(UserInfo.xml)) { CString strUserID _T(); xml.ResetMainPos(); if (xml.FindChildElem(ITEM)) { xml.IntoElem(); CString str_sn; xml.FindChildElem(SN); str_snxml.GetChildData(); if(str_sn132487A-J) { xml.RemoveElem(); xml.Save(UserInfo.xml); } } }