基于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数据格式

<RootNode>

	<Student num = 1>
		<Name>张三</Name>
		<Number>123</Number>
	</Student>
	
	<Student num = 2>
		<Name>李四</Name>
		<Number>456</Number>
	</Student>
	
</RootNode>

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 = "<RootNode>\n";
	for ( int i = 0 ; i<m_List.GetItemCount(); i++)
	{
		strXML = strXML + "<Student num = " + m_List.GetItemText(i,0) + ">\n";
		strXML = strXML + "<Name>" + m_List.GetItemText(i,1) + "</Name>\n";
		strXML = strXML + "<Number>" + m_List.GetItemText(i,2) + "</Number>\n";
		strXML = strXML + "</Student>";
	}
	strXML += "</RootNode>";

	//文件路径
	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界面示意



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值