C++ 使用快速xml查找子元素
我试图获取一个简单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()->
访问冲突读取位置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对我来说仍然是新的,如果它在头文件中,我总是忘记不再声明它。非常感谢!