c++ 使用TinyXML 读取xml数据

来源:互联网 发布:jquery.js文件下载 编辑:程序博客网 时间:2024/06/05 16:18

1  TinyXml 下载地址  点击打开链接


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


#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;}

0 0
原创粉丝点击