用CMarkup类创建xml文件的方法
2012-06-26 18:27
197 查看
Markup.cpp和Markup.h文件内容在下一篇博客中
首先添加Markup.cpp和Markup.h到工程
在用使用xml的.cpp文件中添加头文件#include "Markup.h"
设置Markup.cpp的Project Setting 中c/c++在分类预编译的头文件中选择
“不使用预补偿页眉”
如果是在非MFC工程中使用类CMarkup
编译如果报错
fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include
解决方法:
#ifdef _WINDOWS_
#undef _WINDOWS_
#endif
编译如果报错
error LNK2005: _DllMain@12 已经在 dllmain.obj 中定义
error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已经在 LIBCMTD.lib(new.obj) 中定义
error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) 已经在 LIBCMTD.lib(dbgdel.obj) 中定义
解决方法:
则设置工程Porject Setting中的Link,在分类input输入中的对象/库模块最前面添加Nafxcwd.lib Libcmtd.lib
在忽略库中填写LIBCMT uafxcwd.lib Libcmtd.lib
这样就能在非MFC工程中用了
现在要创建的xml文件如下:
<?xml version="1.0" ?>
<matrixs>
<matrix id="1" type="0" ip="192.168.16.64" port="5050" user="vorx" password="" serv_port="5700">矩阵</matrix>
<matrix id="5" type="0" ip="192.168.16.65" port="5050" user="vorx" password="" serv_port="6000">矩阵</matrix>
<matrix id="6" type="0" ip="192.168.16.66" port="5050" user="vorx" password="" serv_port="6100">矩阵</matrix>
</matrixs>
代码如下
首先添加Markup.cpp和Markup.h到工程
在用使用xml的.cpp文件中添加头文件#include "Markup.h"
设置Markup.cpp的Project Setting 中c/c++在分类预编译的头文件中选择
“不使用预补偿页眉”
如果是在非MFC工程中使用类CMarkup
编译如果报错
fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include
解决方法:
#ifdef _WINDOWS_
#undef _WINDOWS_
#endif
编译如果报错
error LNK2005: _DllMain@12 已经在 dllmain.obj 中定义
error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已经在 LIBCMTD.lib(new.obj) 中定义
error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) 已经在 LIBCMTD.lib(dbgdel.obj) 中定义
解决方法:
则设置工程Porject Setting中的Link,在分类input输入中的对象/库模块最前面添加Nafxcwd.lib Libcmtd.lib
在忽略库中填写LIBCMT uafxcwd.lib Libcmtd.lib
这样就能在非MFC工程中用了
现在要创建的xml文件如下:
<?xml version="1.0" ?>
<matrixs>
<matrix id="1" type="0" ip="192.168.16.64" port="5050" user="vorx" password="" serv_port="5700">矩阵</matrix>
<matrix id="5" type="0" ip="192.168.16.65" port="5050" user="vorx" password="" serv_port="6000">矩阵</matrix>
<matrix id="6" type="0" ip="192.168.16.66" port="5050" user="vorx" password="" serv_port="6100">矩阵</matrix>
</matrixs>
代码如下
利用类CMarkup新建一个xml文件 //g_sFilefullPath.c_str()为要保存xml的路径,获取路径的方法在第六篇博客中 if(GetFileAttributes(g_sFilefullPath.c_str()) == 0xffffffff) //文件不存在时 { CMarkup xml; xml.SetDoc("<?xml version=\"1.0\" ?>\r\n"); xml.AddElem("matrixs"); xml.Save(g_sFilefullPath.c_str()); } //加载xml文件,这时如果用到遍历一定要注意指针当前定义的位置 CMarkup xml; BOOL bLoadXml = FALSE; bLoadXml = xml.Load(g_sFilefullPath.c_str()); //加载xml文件 if (bLoadXml) { xml.ResetMainPos();//将指针定义到第一个顶级标签的上一个位置<文本> xml.FindElem();//将将指针定义到第一个顶级标签 while(xml.FindChildElem("matrix")) { int matrixID = (int)atoi(xml.GetChildAttrib("id")); if (m_InsertMatrixID == matrixID) { MessageBox("此ID已存在,请重新输入","提示",MB_OK); return; } } //遍历完后,指针在文件结尾,这时要将指针重新定位到开头才能进行下面的遍历 xml.ResetMainPos(); xml.FindElem(); while(xml.FindChildElem("matrix")) { string matrixIP = xml.GetChildAttrib("ip"); if (strcmp( m_InsertMatrixIP, matrixIP.c_str()) == 0) { MessageBox("此IP地址已存在,请重新输入","提示",MB_OK); return; } } xml.ResetMainPos(); xml.FindElem(); while(xml.FindChildElem("matrix")) { int matrixSerPort = (int)atoi(xml.GetChildAttrib("serv_port")); if (m_InsertServerPort == matrixSerPort) { MessageBox("此服务代理端口已存在,请重新输入","提示",MB_OK); return; } } //为xml文件添加子元素 xml.AddChildElem( "matrix", "矩阵" );//在顶级标签下面添加子标签 //设置属性 xml.SetChildAttrib("id",m_InsertMatrixID); xml.SetChildAttrib("type",m_InsertType); xml.SetChildAttrib("ip",m_InsertMatrixIP); xml.SetChildAttrib("port",m_InsertMatrixPort); xml.SetChildAttrib("user",m_InsertMatrixUser); xml.SetChildAttrib("password",m_InsertMatrixPassword); xml.SetChildAttrib("serv_port",m_InsertServerPort); xml.Save(g_sFilefullPath.c_str()); }
//删除子节点 CMarkup xml; xml.Load(g_sFilefullPath.c_str()); xml.ResetMainPos(); xml.FindElem(); while (xml.FindChildElem("matrix")) { int idAttribute=(int)atoi(xml.GetChildAttrib("id")); if (idAttribute==nGetId) { xml.RemoveChildElem();
相关文章推荐
- Ruby程序中创建和解析XML文件的方法
- MSXML创建xml文件方法
- 用jdom创建中文的xml文件的方法
- asp.net创建XML文件方法
- C# WinForm 创建XML文件方法总结
- 创建解析XML文件的三种解析方法(一)
- 创建解析XML文件的三种解析方法(二)
- 简单创建XML文件和读取XML文件的方法
- 用c++创建xml文件的两种方法
- dom4j创建了读取xml文件的方法总结
- 创建解析XML文件的三种解析方法(三)
- Spring 关于MyEclipse下创建Maven项目找不到application.xml文件的处理方法
- asp.net创建XML文件的方法小结
- 创建XML文件的两种方法
- 创建XML文件的两种方法
- [转].net创建XML文件的两种方法
- 创建XML文件的两种方法
- .net创建XML文件的两种方法[转载]
- .net创建XML文件的两种方法