Разбор XML элементов в C++

Я использую tinyxml2 и хочу разобрать некоторые элементы из XML в C++. Например

<root>
     <First x="1" y="2">
     <Second x = "1">
     <Second y = "2">
</root>

Я могу разобрать только x во втором элементе.

#include <stdio.h>
#include "tinyxml2.h"
#include <iostream>
#include <string>
#include <iomanip>
using namespace tinyxml2;
using namespace std;
int main(){
     tinyxml2::XMLError eResult = xml_doc.LoadFile("test.xml");
     if (eResult != tinyxml2::XML_SUCCESS) return false;

     tinyxml2::XMLNode* root = xml_doc.FirstChildElement("root");
     if (root == nullptr) return false;

     tinyxml2::XMLElement* First = root->FirstChildElement("First");
     if (First == nullptr) return false;

     double x1 = std::stod(First->Attribute("x"));
     double y1 = std::stod(First->Attribute("y"));

     tinyxml2::XMLElement* Second = root->FirstChildElement("Second");
     if (Second == nullptr) return false;

     double x2 = std::stod(Second->Attribute("x"));
     double y2 = std::stod(Second->Attribute("y"));

     system("pause");
}

Когда я пытаюсь использовать тот же метод для элемента "Первый" или "Второй y", он просто показывает мне ошибки. Что я должен делать?

1 ответ

Вы определяете "двойной х" дважды. Пытаться

double first_x = std::stod(First->Attribute("x"));
double first_y = std::stod(First->Attribute("y"));

а также

double second_x = std::stod(Second->Attribute("x"));

Ваш компилятор должен был остановить вас, всегда обращайте внимание на предупреждения!

Другие вопросы по тегам