Разбор XML-файла и запись в структуры с переполнением стека

Мне было поручено написать класс поля данных, в котором будут храниться все переменные из другого класса, который выполняет функции парсера 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>

Мне нужно знать, что идет не так. Любая помощь будет с благодарностью. Заранее спасибо.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]