首先到官网 http://www.firstobject.com/dn_markup.htm 获取Markup.h和Markup.cpp
示例:
1.生成xml文件
#include<stdlib.h> #include<iostream> #include<string.h> #include"Markup.h" using namespace std; int main() { CMarkup xml; xml.SetDoc("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"); xml.AddElem((MCD_CSTR)"UserInfo"); //在当前主位置元素或最后兄弟位置之后增加一个元素 xml.IntoElem(); //进入当前主位置的下一级,当前的位置变为父位置。 xml.AddElem((MCD_CSTR)"UserID",(MCD_CSTR)"Jason"); xml.AddElem((MCD_CSTR)"UserID",(MCD_CSTR)"evil"); xml.OutOfElem(); //使当前父位置变成当前位置。 xml.Save((MCD_CSTR)"UserInfo.xml"); //可指定目录 将XML数据写入文件中 return 0; }
2.浏览特定元素
#include "stdafx.h" #include<stdlib.h> #include<iostream> #include<string.h> #include"Markup.h" using namespace std; int main() { CMarkup xml; xml.Load((MCD_CSTR)"UserInfo.xml"); BOOL bFind = true; xml.ResetMainPos();//将当前主位置复位为第一个兄弟位置之前 while (xml.FindChildElem((MCD_CSTR)"UserID")) //定位到下一个子元素,匹配元素名或路径。 { xml.IntoElem();//进入当前主位置的下一级,当前的位置变为父位置 CString strTagName = _T(""); CString strData = _T(""); strTagName = xml.GetTagName(); //得到主位置元素(或正在进行的指令的)标签名称 strData = xml.GetData(); // 得到当前主位置元素或节点的字符串值 //以下为了看输出结果把CString 转 char*类型 int len1 =WideCharToMultiByte(CP_ACP,0,strTagName,-1,NULL,0,NULL,NULL); char ptagName[128]; WideCharToMultiByte(CP_ACP,0,strTagName,-1,ptagName,len1,NULL,NULL ); int len2 =WideCharToMultiByte(CP_ACP,0,strData,-1,NULL,0,NULL,NULL); char pData[128]; WideCharToMultiByte(CP_ACP,0,strData,-1,pData,len2,NULL,NULL ); printf("\n-----tagName:%s,Data:%s\n",ptagName,pData); xml.OutOfElem();//使当前父位置变成当前位置 } system("pause"); return 0; }
3.修改元素
#include "stdafx.h" #include<stdlib.h> #include<iostream> #include<string.h> #include"Markup.h" using namespace std; int main() { CMarkup xml; BOOL bLoadXml = false; bLoadXml = xml.Load((MCD_CSTR)"UserInfo.xml"); if( bLoadXml ) { CString strUserID = _T(""); xml.ResetMainPos(); xml.FindElem(); //定位到下一个元素,可能和一个标签名或路径匹配。 也就是定位到UserID; xml.IntoElem(); while (xml.FindElem((MCD_CSTR)"UserID")) { strUserID = xml.GetData(); if (strUserID=="Jason") { xml.SetData(CString("snake")); // 把UserID为Jason值的修改snake xml.Save((MCD_CSTR)"UserInfo.xml"); break; } } } system("pause"); return 0; }
4.添加元素,添加在最后面
#include "stdafx.h" #include<stdlib.h> #include<iostream> #include<string.h> #include"Markup.h" using namespace std; int main() { BOOL bLoadXml = false; CMarkup xml; bLoadXml = xml.Load((MCD_CSTR)"UserInfo.xml"); if (bLoadXml) { xml.ResetMainPos(); xml.FindElem(); xml.IntoElem(); xml.AddElem((MCD_CSTR)"UserID",(MCD_CSTR)"Jason"); xml.OutOfElem(); xml.Save((MCD_CSTR)"UserInfo.xml"); } system("pause"); return 0; }
5.添加元素到最前面,使用的InsertElem()函数
#include "stdafx.h" #include<stdlib.h> #include<iostream> #include<string.h> #include"Markup.h" using namespace std; int main() { BOOL bLoadXml = false; CMarkup xml; bLoadXml = xml.Load((MCD_CSTR)"UserInfo.xml"); if (bLoadXml) { xml.ResetMainPos(); xml.FindElem(); xml.IntoElem(); xml.InsertElem((MCD_CSTR)"UserID",(MCD_CSTR)"AddUserIDHead"); xml.OutOfElem(); xml.Save((MCD_CSTR)"UserInfo.xml"); } system("pause"); return 0; }
6.删除元素 使用的是RemoveChildElem
#include "stdafx.h" #include<stdlib.h> #include<iostream> #include<string.h> #include"Markup.h" using namespace std; int main() { CMarkup xml; xml.Load((MCD_CSTR)"UserInfo.xml"); BOOL bFind = true; xml.ResetMainPos(); while (bFind) { bFind = xml.FindChildElem((MCD_CSTR)"UserID"); if (bFind) { CString strData = _T(""); strData = xml.GetChildData(); if (strData==(MCD_CSTR)"snake") { xml.RemoveChildElem(); xml.Save((MCD_CSTR)"UserInfo.xml"); break; } } } system("pause"); return 0; }