您的位置:逆风者 VC++ 正文
 添加时间:2007-09-01 原文发表:2007-08-31 人气:188 来源:vckbase.com

本文章共1582字,分2页,当前第1页,快速翻页:
 

一个基于MFC的XML封装类 CXml

作者:长沙理工大学 王嘉

下载源代码

逆风编程精品
一、这是我自己做的一个很简单的XML封装类。目前的功能还不够完善,希望能够在大家的提点下继续完善。

二、源文件中包含有三个类(具体看头文件):


	  CXml      XML文件类

	  CXmlNode  XML结点类

	  CXmlNodes XML结点集合类  
三、如何使用

using namespace std;



BOOL funDFS( CXmlNode & node );



int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])

{

	if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))

	{

		// TODO: 更改错误代码以符合您的需要

		_tprintf(_T("致命错误: MFC 初始化失败\n"));

		return 1;

	}



	CoInitialize(NULL);

	{// 这个括号很重要 它限定了智能指针的生存套间 





		CXml xml;

		xml.Open( "I:\\VC_CXmlFile\\test.xml" );



		//--------------------------------------------------------------------------

		



		CXmlNode node1;

		node1 =  xml.GetRoot()->GetChild("YEAR")->GetChild("MONTH")->GetChild("DAY");

		cout << node1.GetName() << endl;



		



		CXmlNode node2;

		node2 = node1;

		cout << node2.GetName() << endl;





		CXmlNode node3( node2 );

		cout << node2.GetName() << endl;





		//////////////////////////////////////////////////////////////////////////

		// 属性操作

		cout << xml.GetRoot()->GetAttribute( "price" ) << endl;

		xml.GetRoot()->GetChild("YEAR")->SetAttribute( "Now", "2005");

		xml.GetRoot()->DelAttribute("r");



		



		

		//////////////////////////////////////////////////////////////////////////

		// 取值 付值

		cout << xml.GetRoot()->GetChild("YEAR")->GetChild("QUARTER1")->GetInt(2005) << endl;

		cout << xml.GetRoot()->GetChild("YEAR")->GetChild("QUARTER2")->GetString("一月") << endl;

		cout << xml.GetRoot()->GetChild("YEAR")->GetChild("QUARTER3")->GetBOOL() << endl;

		cout << xml.GetRoot()->GetChild("YEAR")->GetChild("QUARTER4")->GetFloat(1.1) << endl;





		// 删除

		node1.Remove();

		



		// 子结点

		CXmlNodes nodes;

		nodes = xml.GetRoot()->GetChild("YEAR")->GetChildren();

		cout << nodes.GetCount() << endl;

		BOOL bRet = xml.GetRoot()->GetChild("YEAR")->GetChild("QUARTER2")->HasChildren();

		bRet = xml.GetRoot()->GetChild("YEAR")->HasChildren();





		// 遍历结点

		CXmlNode node4;

		node4 = xml.GetRoot();



		funDFS(node4);





	

		//--------------------------------------------------------------------------

		

		xml.Save();



		xml.Close();



	}

	CoUninitialize();





	return 0;

}





BOOL funDFS( CXmlNode & node )

{

	cout << node.GetName() << endl;



	CXmlNode child;

	CXmlNodes nodes;



	if( node.HasChildren() )

	{

		nodes = node.GetChildren();



		for( int i = 0; i < nodes.GetCount(); i   )

		{

			child = nodes.GetItem(i); 



			funDFS( child );

		}



		return TRUE;

	}

	else

	{

		return FALSE;

	}

}


四、结束语
 
本文章更多内容1 - 2 - 下一页>>
相关文章

Windows快捷方式文件格式解析
关于托盘的一点总结
创建客户区窗口,列表框之间项的拖拽操作
视频采集
通过异步程序调用(APC)实现的定时功能
乱砍设计模式之零
使用MFC的数组类
WHO AM I?看定自己的耕垦区域
一个原创的仪表控件
如何播放 WAV 文件?
Windows 文件过滤驱动经验总结
连接 COM 与 .NET 的桥梁(三)——COM 服务
如何在C#应用程序和DLL中使用消息
推荐一个简单的托盘类
内存优化之道:托管代码的失传内存优化技术
MFC架构下的DirectX8
C QA 专栏:列表视图模式,SetForeground
C# 2.0匿名方法揭密
动态真彩工具栏
实现类似Excel和Visual C 里文件夹式样的标

相关评论


本文章所属分类:首页 VC++

  热门关键字: