CMarkup类解析xml文件 例子

前端之家收集整理的这篇文章主要介绍了CMarkup类解析xml文件 例子前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

CMarkup类解析xml文件@H_403_5@

将CMarkup.cpp和CMarkup.h导入到我们的工程中就可以了。编译可能会出现问题,解决方法是在CMarkup.cpp的开头加上#include <stdafx.h>,或者关闭预编译也可以。@H_403_5@

1、创建一个XML文档@H_403_5@

1 CMarkup xml;@H_403_5@

2 xml.Load("School.xml");@H_403_5@

3 BOOL bFind=TRUE;@H_403_5@

4 xml.ResetMainPos();@H_403_5@

5@H_403_5@

6while(xml.FindChildElem("Department"))@H_403_5@

7 {@H_403_5@

8 CString strTagName=_T("");@H_403_5@

9 CString strData=_T("");@H_403_5@

10 strTagName=xml.GetChildTagName();//此时节点是父节点@H_403_5@

11 strData=xml.GetChildData();@H_403_5@

12 TRACE("\n---tagName:%s,Data:%s--\n",strTagName,strData);@H_403_5@

13 }@H_403_5@

//***********************这样也可以*****************************/@H_403_5@

1 CMarkup xml;@H_403_5@

2 xml.Load("School.xml");@H_403_5@

3 BOOL bFind=TRUE;@H_403_5@

4 xml.ResetMainPos();@H_403_5@

5@H_403_5@

6while(xml.FindChildElem("Department"))@H_403_5@

7 {@H_403_5@

8 xml.IntoElem();@H_403_5@

9 CString strTagName=_T("");@H_403_5@

10 CString strData=_T("");@H_403_5@

11 strTagName=xml.GetTagName();@H_403_5@

12 strData=xml.GetData();@H_403_5@

13 TRACE("\n---tagName:%s,strData);@H_403_5@

14 xml.OutOfElem();@H_403_5@

15 }@H_403_5@

//***********************或者这样也可以***************************/@H_403_5@

1 CMarkup xml;@H_403_5@

2 xml.Load("School.xml");@H_403_5@

3 BOOL bFind=TRUE;@H_403_5@

4 xml.ResetMainPos();@H_403_5@

5 xml.FindElem();//School@H_403_5@

6 xml.IntoElem();@H_403_5@

7@H_403_5@

8while(xml.FindElem("Department"))@H_403_5@

9 {@H_403_5@

10 CString strTagName=_T("");@H_403_5@

11 CString strData=_T("");@H_403_5@

12 strTagName=xml.GetTagName();@H_403_5@

13 strData=xml.GetData();@H_403_5@

14 TRACE("\n---tagName:%s,strData);@H_403_5@

15 }@H_403_5@

//***********结果**************@H_403_5@

---tagName:Department,Data:Automation--@H_403_5@

---tagName:Department,Data:Computer--@H_403_5@

---tagName:Department,Data:Math--@H_403_5@

---tagName:Department,Data:English--@H_403_5@

3、修改元素@H_403_5@

//把Department为”English“改为”Chinese“@H_403_5@

1 CMarkup xml;@H_403_5@

2 BOOL bLoadXml=FALSE;@H_403_5@

3 bLoadXml=xml.Load("School.xml");@H_403_5@

4@H_403_5@

5if(bLoadXml)@H_403_5@

6 {@H_403_5@

7 CString str=_T("");@H_403_5@

8 xml.ResetMainPos();@H_403_5@

9 xml.FindElem();@H_403_5@

10 xml.IntoElem();@H_403_5@

11while(xml.FindElem("Department"))@H_403_5@

12 {@H_403_5@

13 str=xml.GetData();@H_403_5@

14if(str=="English")@H_403_5@

15 {@H_403_5@

16 xml.SetData("Chinese");@H_403_5@

17 xml.Save("School.xml");@H_403_5@

18break;@H_403_5@

19 }@H_403_5@

20 }@H_403_5@

21 }@H_403_5@

效果如下:@H_403_5@

1 <?xml version="1.0" encoding="UTF-8"?>@H_403_5@

2 <School>@H_403_5@

3 <Department>Automation</Department>@H_403_5@

4 <Department>Computer</Department>@H_403_5@

5 <Department>Math</Department>@H_403_5@

6 <Department>Chinese</Department>@H_403_5@

7 </School>@H_403_5@

8@H_403_5@

对于创建一个XML文档,需要实例化一个CMarkup对象,并调用AddElem创建根元素。在这个位置,如果你调用AddElem("School"),文档会简单的装一个空元素<School/>.然后调用AddChildElem在根元素的下面创建元素。@H_403_5@

1 CMarkup xml;@H_403_5@

2 xml.SetDoc("<?xml version=\"1.0\"encoding=\"UTF-8\"?>\r\n");@H_403_5@

3 xml.AddElem("School");@H_403_5@

4 xml.IntoElem();@H_403_5@

5 xml.AddElem("Department","Automation");@H_403_5@

6 xml.AddElem("Department","Computer");@H_403_5@

7 xml.AddElem("Department","Math");@H_403_5@

8 xml.AddElem("Department","English");@H_403_5@

9 xml.OutOfElem();@H_403_5@

10 xml.Save("School.xml");@H_403_5@

效果如下:@H_403_5@

1 <?xml version="1.0" encoding="UTF-8"?>@H_403_5@

2 <School>@H_403_5@

3 <Department>Automation</Department>@H_403_5@

4 <Department>Computer</Department>@H_403_5@

5 <Department>Math</Department>@H_403_5@

6 <Department>English</Department>@H_403_5@

7 </School>@H_403_5@

8@H_403_5@

2、浏览特定元素@H_403_5@

4、添加@H_403_5@

4、1 添加在最后面(用AddElem)@H_403_5@

1 CMarkup xml;@H_403_5@

2 BOOL bLoadXml=FALSE;@H_403_5@

3 bLoadXml=xml.Load("School.xml");@H_403_5@

4if(bLoadXml)@H_403_5@

5 {@H_403_5@

6 xml.ResetMainPos();@H_403_5@

7 xml.FindElem();@H_403_5@

8 xml.IntoElem();@H_403_5@

9 xml.AddElem("Department","SiQinghua");@H_403_5@

10 xml.OutOfElem();@H_403_5@

11 xml.Save("School.xml");@H_403_5@

12 }@H_403_5@

效果如下:@H_403_5@

1 <?xml version="1.0" encoding="UTF-8"?>@H_403_5@

2 <School>@H_403_5@

3 <Department>Automation</Department>@H_403_5@

4 <Department>Computer</Department>@H_403_5@

5 <Department>Math</Department>@H_403_5@

6 <Department>Chinese</Department>@H_403_5@

7 <Department>SiQinghua</Department>@H_403_5@

8 </School>@H_403_5@

4、2 添加在最前面(用InsertElem)@H_403_5@

1 CMarkup xml;@H_403_5@

2 BOOL bLoadXml=FALSE;@H_403_5@

3 bLoadXml=xml.Load("School.xml");@H_403_5@

4if(bLoadXml)@H_403_5@

5 {@H_403_5@

6 xml.ResetMainPos();@H_403_5@

7 xml.FindElem();@H_403_5@

8 xml.IntoElem();@H_403_5@

9 xml.AddElem("Department","SiQinghua");@H_403_5@

10 xml.OutOfElem();@H_403_5@

11 xml.Save("School.xml");@H_403_5@

12 }@H_403_5@

效果如下:@H_403_5@

1 <?xml version="1.0" encoding="UTF-8"?>@H_403_5@

2 <School>@H_403_5@

3 <Department>NARI</Department>@H_403_5@

4 <Department>Automation</Department>@H_403_5@

5 <Department>Computer</Department>@H_403_5@

6 <Department>Math</Department>@H_403_5@

7 <Department>Chinese</Department>@H_403_5@

8 <Department>SiQinghua</Department>@H_403_5@

9 </School>@H_403_5@

10@H_403_5@

5、删除@H_403_5@

1 CMarkup xml;@H_403_5@

2 BOOL bLoadXml=FALSE;@H_403_5@

3 bLoadXml=xml.Load("School.xml");@H_403_5@

4if(bLoadXml)@H_403_5@

5 {@H_403_5@

6 BOOL bFind=TRUE;@H_403_5@

7 xml.ResetMainPos();@H_403_5@

8while(bFind)@H_403_5@

9 {@H_403_5@

10 bFind=xml.FindChildElem("Department");@H_403_5@

11if(bFind)@H_403_5@

12 {@H_403_5@

13 CString strData=_T("");@H_403_5@

14 strData=xml.GetChildData();//此时节点还是父节点@H_403_5@

15if("SiQinghua"==strData)@H_403_5@

16 {@H_403_5@

17 xml.RemoveChildElem();@H_403_5@

18 xml.Save("School.xml");@H_403_5@

19break;@H_403_5@

20 }@H_403_5@

21 }@H_403_5@

22 }@H_403_5@

23 }@H_403_5@

效果如下:@H_403_5@

1<?xml version="1.0" encoding="UTF-8"?>@H_403_5@

2<School>@H_403_5@

3<Department>NARI</Department>@H_403_5@

4<Department>Automation</Department>@H_403_5@

5<Department>Computer</Department>@H_403_5@

6<Department>Math</Department>@H_403_5@

7<Department>Chinese</Department>@H_403_5@

8</School>@H_403_5@

上面的例子都是不带属性的,下面举一个带有属性的例子。@H_403_5@

1、生成XML文档@H_403_5@

1 CMarkup xml;@H_403_5@

2 xml.SetDoc("<?xml version=\"1.0\"encoding=\"UTF-8\"?>");@H_403_5@

3 xml.AddElem("UserInfo");@H_403_5@

4 xml.IntoElem();@H_403_5@

5for(inti=0;i<10;i++)@H_403_5@

6 {@H_403_5@

7 CString strID=_T("");@H_403_5@

8 CString strPwd=_T("");@H_403_5@

9@H_403_5@

10 srand(UINT(time(NULL)+i));//产生一个随机数@H_403_5@

11intnLevel=rand()%256;@H_403_5@

12@H_403_5@

13 strID.Format("UserID%02d",i);@H_403_5@

14 strPwd.Format("UserPwd%02d",i);@H_403_5@

15@H_403_5@

16 xml.AddElem("User");@H_403_5@

17 xml.AddAttrib("UserID",strID);@H_403_5@

18 xml.AddAttrib("UserPwd",strPwd);@H_403_5@

19 xml.AddAttrib("UserLevel",nLevel);@H_403_5@

20 }@H_403_5@

21 xml.OutOfElem();@H_403_5@

22 xml.Save("UserInfo.xml");@H_403_5@

效果如下:@H_403_5@

1 <?xml version="1.0" encoding="UTF-8"?>@H_403_5@

2 <UserInfo>@H_403_5@

3 <UserUserID="UserID00"UserPwd="UserPwd00"UserLevel="85"/>@H_403_5@

4 <UserUserID="UserID01"UserPwd="UserPwd01"UserLevel="88"/>@H_403_5@

5 <UserUserID="UserID02"UserPwd="UserPwd02"UserLevel="92"/>@H_403_5@

6 <UserUserID="UserID03"UserPwd="UserPwd03"UserLevel="95"/>@H_403_5@

7 <UserUserID="UserID04"UserPwd="UserPwd04"UserLevel="98"/>@H_403_5@

8 <UserUserID="UserID05"UserPwd="UserPwd05"UserLevel="101"/>@H_403_5@

9 <UserUserID="UserID06"UserPwd="UserPwd06"UserLevel="105"/>@H_403_5@

10 <UserUserID="UserID07"UserPwd="UserPwd07"UserLevel="108"/>@H_403_5@

11 <UserUserID="UserID08"UserPwd="UserPwd08"UserLevel="111"/>@H_403_5@

12 <UserUserID="UserID09"UserPwd="UserPwd09"UserLevel="115"/>@H_403_5@

13 </UserInfo>@H_403_5@

14@H_403_5@

2、查找特定属性@H_403_5@

1 CMarkup xml;@H_403_5@

2 BOOL bLoadXml=FALSE;@H_403_5@

3 BOOL bFind=FALSE;@H_403_5@

4 bLoadXml=xml.Load("UserInfo.xml");@H_403_5@

5if(bLoadXml)@H_403_5@

6 {@H_403_5@

7 CString strID;@H_403_5@

8 CString strPwd;@H_403_5@

9 xml.ResetMainPos();@H_403_5@

10 xml.FindElem();//UserInfo@H_403_5@

11while(xml.FindChildElem("User"))@H_403_5@

12 {@H_403_5@

13 strID=xml.GetChildAttrib("UserID");@H_403_5@

14 strPwd=xml.GetChildAttrib("UserPwd");@H_403_5@

15 TRACE("\n---id:%s,pwd:%s---\n",strID,strPwd);@H_403_5@

16if(strID=="UserID02"&&strPwd=="UserPwd02")@H_403_5@

17 {@H_403_5@

18 bFind=TRUE;@H_403_5@

19break;@H_403_5@

20 }@H_403_5@

21 }@H_403_5@

22 }@H_403_5@

23if(bFind==TRUE)@H_403_5@

24 TRACE("\n---find---\n");@H_403_5@

25else@H_403_5@

26 TRACE("\n---not find---\n");@H_403_5@

3、修改特定属性@H_403_5@

1 CMarkup xml;@H_403_5@

2 BOOL bFind=FALSE;@H_403_5@

3 BOOL bLoadXml=FALSE;@H_403_5@

4 bLoadXml=xml.Load("UserInfo.xml");@H_403_5@

5if(bLoadXml)@H_403_5@

6 {@H_403_5@

7 CString strID;@H_403_5@

8 CString strPwd;@H_403_5@

9 xml.ResetMainPos();@H_403_5@

10 xml.FindElem();//UserInfo@H_403_5@

11while(xml.FindChildElem("User"))@H_403_5@

12 {@H_403_5@

13 strID=xml.GetChildAttrib("UserID");@H_403_5@

14 strPwd=xml.GetChildAttrib("UserPwd");@H_403_5@

15 TRACE("\n--id:%s,pwd:%s--\n",strPwd);@H_403_5@

16if(strID=="UserID02"&&strPwd=="UserPwd02")@H_403_5@

17 {@H_403_5@

18 bFind=TRUE;@H_403_5@

19 xml.SetChildAttrib("UserID",strID+CString("Modified"));@H_403_5@

20 xml.Save("UserInfo.xml");@H_403_5@

21break;@H_403_5@

22 }@H_403_5@

23 }@H_403_5@

24 }@H_403_5@

25if(bFind==TRUE)@H_403_5@

26 TRACE("\n---find---\n");@H_403_5@

27else@H_403_5@

28 TRACE("\n---not find---\n");@H_403_5@

效果如下:@H_403_5@

1 <?xml version="1.0" encoding="UTF-8"?>@H_403_5@

2 <UserInfo>@H_403_5@

3 <UserUserID="UserID00"UserPwd="UserPwd00"UserLevel="85"/>@H_403_5@

4 <UserUserID="UserID01"UserPwd="UserPwd01"UserLevel="88"/>@H_403_5@

5 <UserUserID="UserID02Modified"UserPwd="UserPwd02"UserLevel="92"/>@H_403_5@

6 <UserUserID="UserID03"UserPwd="UserPwd03"UserLevel="95"/>@H_403_5@

7 <UserUserID="UserID04"UserPwd="UserPwd04"UserLevel="98"/>@H_403_5@

8 <UserUserID="UserID05"UserPwd="UserPwd05"UserLevel="101"/>@H_403_5@

9 <UserUserID="UserID06"UserPwd="UserPwd06"UserLevel="105"/>@H_403_5@

10 <UserUserID="UserID07"UserPwd="UserPwd07"UserLevel="108"/>@H_403_5@

11 <UserUserID="UserID08"UserPwd="UserPwd08"UserLevel="111"/>@H_403_5@

12 <UserUserID="UserID09"UserPwd="UserPwd09"UserLevel="115"/>@H_403_5@

13 </UserInfo>@H_403_5@

猜你在找的XML相关文章