基于tinyxml类解析XML文档构建数据库

基于tinyxml类解析XML文档构建数据库

数据表格以XML格式存储在XML文档中,通过tinyxml工具解析XML来读取数据库,然后在MFC可编辑表格中实现数据的添加、删除、查询,最后通过重新组装XML格式文档来保存数据库。

特点:不依赖ACCESS数据库和SQL SEVER等专门的数据库软件即可实现数据库的功能,非常便捷。

工具:tinyxml.h  tinystr.h tixml.lib  下载地址:http://download.csdn.net/detail/phnumber/9797808

1.XML数据格式



	
		张三
		123
	
	
	
		李四
		456
	
	

2.读取XML文档

	//从本地工程文件中读取xml格式数据
	TiXmlDocument doc;
	doc.LoadFile("read.xml");

	//读取XML格式数据
	TiXmlNode *pRootNode = doc.RootElement();
	if (pRootNode)
	{
		//第一个元素
		TiXmlElement *pStudentEle = pRootNode->FirstChildElement();

		int i = 0;
		CString str;
		m_List.DeleteAllItems();
		while (pStudentEle)
		{
			//获得属性
			const char *pStudentIDnum = pStudentEle->Attribute("num");

			//获得子元素
			const char *pStudentName = pStudentEle->FirstChildElement("Name")->GetText();
			const char *pStudentNumber = pStudentEle->FirstChildElement("Number")->GetText();

			//显示数据
			str.Format("%s",pStudentIDnum);
			m_List.InsertItem(i,str);
			str.Format("%s",pStudentName);
			m_List.SetItemText(i,1,str);
			str.Format("%s",pStudentNumber);
			m_List.SetItemText(i,2,str);

			//下一个同层元素
			i++;
			pStudentEle = pStudentEle->NextSiblingElement();
		}
	}

3.组装XML文档

	CString strXML;
	//添加根节点
	strXML = "\n";
	for ( int i = 0 ; i\n";
		strXML = strXML + "" + m_List.GetItemText(i,1) + "\n";
		strXML = strXML + "" + m_List.GetItemText(i,2) + "\n";
		strXML = strXML + "";
	}
	strXML += "";

	//文件路径
	TCHAR szFilter[] = _T("文本文件(*.xml)|*.xml||");
	CFileDialog fileDlg(FALSE,_T("doc"),_T("write"),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter,this);
	CString strFilePath = "";
	if (IDOK==fileDlg.DoModal())
	{
		strFilePath = fileDlg.GetPathName();

		//保存文件
		FILE * fp = fopen(strFilePath,"w");
		fprintf(fp,"%s",strXML);
		fclose(fp);	
	}

4.MFC界面示意

基于tinyxml类解析XML文档构建数据库_第1张图片


你可能感兴趣的:(C++程序设计)