Это может быть скорее проблема c ++, чем проблема rapidxml, и я все еще изучаю c ++, так что извините, если это очень глупый вопрос.
Я пытаюсь загрузить файл XML внутриблок try:
rapidxml::xml_document<> doc;
rapidxml::xml_node<>* root_node;
try
{
rapidxml::file<> file((data_folder + "\\application.xml").c_str());
doc.parse<0>(file.data());
root_node = doc.first_node("Application");
std::cout << root_node->first_node("AppMeta");
}
catch (const std::runtime_error& e)
{
// ...
}
Этот код правильно печатает указатель узла AppMeta. Проблема в том, что когда я перемещаю строку cout
за пределы блока:
rapidxml::xml_document<> doc;
rapidxml::xml_node<>* root_node;
try
{
rapidxml::file<> file((data_folder + "\\application.xml").c_str());
doc.parse<0>(file.data());
root_node = doc.first_node("Application");
}
catch (const std::runtime_error& e)
{
// ...
}
std::cout << root_node->first_node("AppMeta");
В этом случае значение, отображаемое на консоли, равно nullptr (00000000). Почему это происходит, и как я могу получить доступ к XML dom после блока try catch?