Я пытаюсь получить дочерний элемент простого xml, но он работает неправильно. Я получаю исключение времени выполнения: Access violation reading location 0x0000000
. Я просто пытаюсь получить к нему доступ следующим образом:
Config::Config()
{
rapidxml::file<> xmlFile("config.xml");
rapidxml::xml_document<> m_doc;
m_doc.parse<0>(xmlFile.data());
LOG(m_doc.first_node()->name());//simple cout makro
LOG(findNode("test")->value());
}
xml_node<>* Config::findNode(const char* name)
{
LOG("looking for "<< name);
return m_doc.first_node()->first_node(name);
}
XML простой:
<root>
<test>test</test>
</root>
Я получаю лог для корневого элемента из строки LOG(m_doc.first_node()->name());
и лог из "ищу". Я понятия не имею, что я делаю неправильно? Я получаю первый элемент, который должен быть корневым (и регистратор говорит об этом), а затем я пытаюсь найти первого дочернего элемента с именем test. Который должен иметь значение test. Я также получаю такое же исключение, если пытаюсь напечатать имя или что-то в этом роде.
ОБНОВЛЕНИЕ: я только что попробовал LOG(m_doc.first_node()->first_node("test")->value()); и это действительно возвращает правильное значение. Но я не могу вызвать свой метод для этого. Что я сделал не так с методом? Любая подсказка? LOG(findNode("test")->value()); не работает . Значит что-то с ним не так.