您的位置:首页 > 编程语言 > C语言/C++

c++ 使用TinyXML 读取xml数据

2014-08-15 20:05 519 查看
1 TinyXml 下载地址 点击打开链接

2 下载完成后解压缩 将tinystr.cpp ,tinystr.h,tinyxml.cpp,tinyxml.h,tinyxmlerror.cpp,tinyxmlparser.cpp 加入工程中

3
#include<iostream>
#include "tinystr.h"
#include "tinyxml.h"
#include<string>
#include<windows.h>
using namespace std;
#define  MAX_PATH1 100
/*获取exe文件路径*/
string GetAppPath()
{
	 char spath[MAX_PATH1] = {0};
	 GetModuleFileName(NULL,spath,MAX_PATH);
	 string path(spath);
	 cout<<path<<endl;
     int m= path.find_last_of('\\');
	 path = path.substr(0,m);
	 cout<<path<<endl;
	 return path;
	  
	
}

/*创建一个xml数据*/

bool CreateXmlFile(string&  szFileName)
{
	 try
	 {
		  TiXmlDocument *myDocument = new TiXmlDocument();
		  TiXmlElement *RootElement = new TiXmlElement("Persons");
		  myDocument->LinkEndChild(RootElement);
		  TiXmlElement *PersonElement = new TiXmlElement("Person");
		  RootElement->LinkEndChild(PersonElement);
		  PersonElement->SetAttribute("ID",1);
		  TiXmlElement *PersonName  = new TiXmlElement("name");
		  TiXmlElement *PersonAge = new TiXmlElement("age");
		  PersonElement->LinkEndChild(PersonName);
		  PersonElement->LinkEndChild(PersonAge);

		  TiXmlText *NameContent = new TiXmlText("小家");
		  TiXmlText *AgeContent = new TiXmlText("23");
		  PersonName->LinkEndChild(NameContent);
		  PersonAge->LinkEndChild(AgeContent);
		  string spath = GetAppPath();
		  spath += "\\";
		  spath += szFileName;
		  myDocument->SaveFile(spath.c_str());

	 }
	 catch (string e)
	 {
	 	return false;
	 }

	 return true;
	

}

bool ReadXmlFile(string& szFileName)
{
	try
	{
		 string apppath = GetAppPath();
		 apppath += "\\";
		 apppath += szFileName;
		 TiXmlDocument *myDocument = new  TiXmlDocument(apppath.c_str());
		 myDocument->LoadFile();
		 TiXmlElement *RootElement = myDocument->RootElement();
		 cout<<RootElement->Value()<<endl;
		 TiXmlElement *FirstPerson = RootElement->FirstChildElement();
		 
		 TiXmlElement *NameElement = FirstPerson->FirstChildElement();
		 TiXmlElement *AgeElement = NameElement->NextSiblingElement();
		 TiXmlAttribute *personattri = FirstPerson->FirstAttribute();

		 cout<<NameElement->FirstChild()->Value()<<endl;
		 cout<<AgeElement->FirstChild()->Value()<<endl;
		 cout<<personattri->Value()<<endl;
	}
	catch(string e)
	{
		return false;

	}

	return true;

}

int main()
{
	string str = "123.txt";
  if(CreateXmlFile(str))
	  cout<<"ok"<<endl;
  else
	  cout<<"0"<<endl;

  if(ReadXmlFile(str))
	  cout<<"ok"<<endl;
  else
	  cout<<"0"<<endl;

  return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐