c++ - TinyXML2 - 入门麻烦

标签 c++ xml tinyxml tinyxml2

我刚刚开始使用 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/

相关文章:

c++ - 为什么我可以在 c++ 中传递对未初始化元素的引用?

c++ - CComModule::Unlock();

java - 使用 Java Servlet 上传 XML

xml - XPath 版本(1.0、2.0、3.1)之间有什么区别

c++ - 我应该使用 XPath 还是只使用 DOM?

c++ - 静态编译时如何摆脱OCI.dll依赖

c++ - 为什么不能显式调用构造函数而析构函数可以?

android - 为什么布局,设置为match_parent,显示宽度为0

c++ - 与 C++ 中带有引号的硬编码字符串进行比较

c++ - 尝试将元素添加到现有节点时程序崩溃