Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用快速xml查找子元素_C++_Xml_Parsing_Rapidxml - Fatal编程技术网

C++ 使用快速xml查找子元素

C++ 使用快速xml查找子元素,c++,xml,parsing,rapidxml,C++,Xml,Parsing,Rapidxml,我试图获取一个简单xml的子元素,但它不能正常工作。我获得运行时异常:访问冲突读取位置0x0000000。 我只是尝试这样访问它: Config::Config() { rapidxml::file<> xmlFile("config.xml"); rapidxml::xml_document<> m_doc; m_doc.parse<0>(xmlFile.data()); LOG(m_doc.first_node()->

我试图获取一个简单xml的子元素,但它不能正常工作。我获得运行时异常:
访问冲突读取位置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);
}
Config::Config()
{
rapidxml::文件xmlFile(“config.xml”);
rapidxml::xml_文档m_文档;
m_doc.parse(xmlFile.data());
LOG(m_doc.first_node()->name());//简单的cout makro
日志(findNode(“test”)->value();
}
xml_node*Config::findNode(const char*name)
{
日志(“查找”第一个节点(名称);
}
xml很简单:

<root>
    <test>test</test>
</root>

测试
我确实从行
log(m_doc.first_node()->name());
中获取了根元素的日志,并且从“查找”中获取了日志。我不知道我做错了什么?
我获取了第一个元素,它应该是根元素(并且记录器这样说)然后我试着找到第一个名为test的子级。它应该有值测试。如果我试着打印名称之类的,我也会得到同样的异常


更新:
我刚刚尝试了LOG(m_doc.first_node()->first_node(“test”)->value()),这确实返回了正确的值。但我无法调用我的方法来执行此操作。我对该方法做了什么错误?有什么线索吗?LOG(findNode(“test”)->value())不起作用。因此它有点不对劲。

您已经(re)将
m_doc
声明为
Config::Config
中的局部变量,隐藏可能是成员变量的内容。只需去掉该声明。

我完全糊涂了。我只是尝试了
LOG(m_doc.first_node()->first_node(“test”)->value()
这确实返回了正确的值。但是我不能调用我的方法来执行此操作。我对该方法做了什么错误?有什么线索吗?
LOG(findNode(“test”)->value();
没有work@BennX我想我已经发现了你的错误。请参阅上面更新的答案。是的,对…cpp对我来说仍然是新的,如果它在头文件中,我总是忘记不再声明它。非常感谢!