在c++中使用tinyXml类库,来读取或写XML文件
在头文件中引入
#include"tinyxml2.h"
void read_xml_file::read_xml_inf(string file_path)
{
XMLDocument doc;
doc.LoadFile(file_path.c_str());
XMLElement* root=doc.RootElement();
XMLElement* element = root->FirstChildElement("BasicModule")->FirstChildElement("TotalNumber")->ToElement();
if(!element)
{
cout<<file_path<<" file open failed"<<endl;
//return;
exit(0);
}
//number
this->image_number=atoi(element->GetText());
this->image_date=new int[this->image_number];
//get date
XMLElement* eimage_date = root->FirstChildElement("BasicModule")->FirstChildElement("ImageNumber")->ToElement();
for(int i=0;i<this->image_number;i++)
{
image_date[i]=stoe(atoi(eimage_date->FirstChildElement("ImageName")->GetText()));
eimage_date=eimage_date->NextSiblingElement();
}
//xml path
XMLElement* erslcxmlpath = root->FirstChildElement("BasicModule")->FirstChildElement("ImageNumber")->FirstChildElement("XmlPath")->ToElement();
this->RSLCXmlPath=erslcxmlpath->GetText();
//if number
XMLElement* einfnumber = root->FirstChildElement("IfModule")->FirstChildElement("IfTotalNumber")->ToElement();
this->inf_number=atoi(einfnumber->GetText());
this->master_date=new int[this->inf_number];
this->slave_date=new int[this->inf_number];
//get m-s date
XMLElement* einf_date = root->FirstChildElement("IntfModule")->FirstChildElement("IfNumber")->ToElement();
for(int j=0;j<this->inf_number;j++)
{
master_date[j]=stoe(atoi(einf_date->FirstChildElement("MDate")->GetText()));
slave_date[j]=stoe(atoi(einf_date->FirstChildElement("SDate")->GetText()));
einf_date=einf_date->NextSiblingElement();
}
}
该代码实现功能:
- 从一个XML文件中读取inf的数量
- 记录不同的inf的主从日期
- 在一个文件中循环读取