Разбор 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"));
Ваш компилятор должен был остановить вас, всегда обращайте внимание на предупреждения!