Чтение документа XML с использованием pugiXml

У меня проблема с анализом XML-документа с использованием pugiXml, мне кажется, что все правильно, но этот код не работает:(

void MainWindow::open()
{
    QString fileName = QFileDialog::getOpenFileName(this,"Open");
    xml_document doc;
    doc.load_file(fileName.toStdString().c_str());

    for (pugi::xml_node node : doc.child("Person"))
    {
        qDebug(node.child_value("nom"));
        qDebug(node.child_value("Age"));
    }
}

Формат файла XML:

<?xml version="1.0"?>
<Persons>
<Person>
    <nom>Med</nom>
    <Age>12</Age>
</Person>
<Person>
    <nom>Nasr</nom>
    <Age>14</Age>
</Person>
<Person>
    <nom>Souad</nom>
    <Age>52</Age>
</Person>
</Persons>

1 ответ

Решение

Наиболее вероятная причина - использование doc.child("Персоны").

Объект документа в вашем случае имеет один дочерний объект Person, который имеет несколько дочерних объектов Person. doc.child("Person") не может найти узел и возвращает нулевой дескриптор.

Сказав это, не забудьте также проверить возвращаемое значение load_file.

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