我刚刚开始使用 XML 解析库,但我在开始时遇到了麻烦。 (我猜是学习曲线)更具体地说,我在尝试获取一个元素并使用它时正在处理一个异常。现在我有这一行:
tinyxml2::XMLElement *firstEvent = doc.FirstChildElement("EVENTS")->FirstChildElement();
抛出内存异常。出于某种原因,我无法显示我的 XML 代码,但结构是
文件->EVENTS->事件->更多内容
所以在我看来,解析器无法访问“事件”元素。是什么原因造成的?我究竟做错了什么?!任何帮助都会非常好!
最佳答案
假设这是您的 xml 内容:
<events>
<event> "Move" <\event>
<event> "Walk" <\event>
<event> "Run" <\event>
<\events>
在迭代之前测试 XmlElement
是否不是 NULL
以避免抛出异常:
C++ 代码片段可能如下所示:
XmlElement* elem = doc.FirstChildElement("events");
if(elem != NULL)
{
for (XmlElement* e = elem->FirstChildElement("event"); e != NULL; e = e->NextSiblingElement("event"))
{
const char *c = e->GetText(); // if its an attrib use e->Attribute("event-type");
/* more */
}
}
关于c++ - TinyXML2 - 入门麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48572920/