将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,Da 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,Da ---tagName:Department,Da ---tagName:Department,Da ---tagName:Department,Da //把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@
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@
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@
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@
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@
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@
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@
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 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@
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@
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@
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@
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@