我被分配编写一个数据字段类,它将保存来自其他类的所有变量,这些变量充当xml解析器。在这样做时,我正在使用TinyXML。我使用结构来保存多个子标签。但是,当我尝试打印来自解析的XML文件的变量时,会出现问题。这是我正在尝试构建的结构的单标签演示:
Store.h
#ifndef STORE_H_
#define STORE_H_
#include <stdio.h>
#include <stdlib.h>
class Store
{
public:
Store();
private:
typedef struct
{
double d_position;
double d_temp;
double d_soundvel;
} GAB;
GAB gab;
public:
// Getter and Setter
void SetGab (double d_position,
double d_temp,
double d_soundvel);
GAB GetGab();
....
};
#endif
Store.cpp
#include "Store.h"
#include <stdio.h>
#include <stdlib.h>
Store::Store()
{
}
void Store::SetGab (double d_position,
double d_temp,
double d_soundvel)
{
this->gab.d_position = d_position;
this->gab.d_temp = d_temp;
this->gab.d_soundvel = d_soundvel;
}
Store::GAB Store::GetGab()
{
return this->gab;
}
XMLParser.h
#ifndef XMLPARSER_H_
#define XMLPARSER_H_
#include <cstdlib>
#include "../tinyxml/tinyxml.cpp"
#include "../tinyxml/tinyxml.h"
#include "../tinyxml/tinyxmlerror.cpp"
#include "../tinyxml/tinyxmlparser.cpp"
#include "../tinyxml/tinystr.cpp"
#include "../tinyxml/tinystr.h"
#include "Store.h"
class XMLParser : public Store
{
public:
void ParseTheFile();
};
#endif
XMLParser.cpp
#include "XMLParser.h"
void XMLParser::ParseTheFile()
{
TiXmlDocument XMLdoc("file.xml");
bool load_status = XMLdoc.LoadFile();
if(load_status)
{
TiXmlElement *pRoot, *pGAB, *pposition, *ptemp, *psoundvel;
pRoot = XMLdoc.FirstChildElement("SENSOR");
if (pRoot)
{
pGAB = pRoot -> FirstChildElement("GAB");
if (pGAB)
{
pposition = pGAB -> FirstChildElement("position");
ptemp = pGAB -> FirstChildElement("temp");
psoundvel = pGAB -> FirstChildElement("soundvel");
if (pposition || ptemp || psoundvel)
{
this->SetGab(atof(pposition->GetText()),
atof(ptemp->GetText()),
atof(psoundvel->GetText()));
}
}
}
}
}
这是控制程序,它实例化这些对象并尝试获取解析后的变量。
Main.cpp的
#include <stdio.h>
#include <stdlib.h>
#include "src/Store.h"
#include "src/XMLParser.h"
int main(int argc, char **argv)
{
XMLParser xmlparser;
xmlparser.ParseTheFile();
printf("%lf \n",xmlparser.GetGab().d_soundvel);
return 0;
}
Main.cpp什么都不返回。我试过控制XMLParser.cpp。程序正确解析xml文件,它也写入结构。但结构有问题,我无法从主程序中读取变量。
最后,这是我要解析的XML文件:
file.xml
<?xml version='1.0' encoding='UTF-8'?>
<SENSOR>
...
<GAB>
<position>300</position>
<temp>24.658</temp>
<soundvel>342.18</soundvel>
</GAB>
...
</SENSOR>
我需要知道出了什么问题。任何帮助将非常感激。提前谢谢。