我刚刚开始使用XML解析库,但是在入门时遇到了问题。(我猜是学习曲线(更具体地说,我在尝试获取元素并使用它时正在处理异常。现在我有这一行:
tinyxml2::XMLElement *firstEvent = doc.FirstChildElement("EVENTS")->FirstChildElement();
这将引发内存异常。由于某种原因,我无法显示我的 XML 代码,但结构是
文件->事件->事件->更多内容
所以在我看来,解析器无法访问"事件"元素。可能是什么原因造成的?我做错了什么?!任何帮助都会非常好!
假设这是您的 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 */
}
}