0

我尝试获取一个简单 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());的日志,并从“寻找”中获取了日志。我不知道我做错了什么?我得到了第一个应该是 root 的元素(并且记录器这么说),然后我尝试找到第一个名为 test 的子元素。其中应该有价值测试。如果我尝试打印名称等,我也会遇到同样的异常。


更新: 我刚刚尝试了 LOG(m_doc.first_node()->first_node("test")->value()); 这确实返回了正确的值。但我不能调用我的方法来做到这一点。我做错了什么方法?有什么线索吗?LOG(findNode("test")->value()); 不工作。所以有些地方不对劲。

4

1 回答 1

1

您已经(重新)在 中声明m_doc为局部变量Config::Config,从而掩盖了可能是成员变量的内容。只是摆脱那个声明。

于 2014-04-16T17:57:05.303 回答