【问题标题】:Getting Segmentation Fault with TinyXML使用 TinyXML 获取分段错误
【发布时间】:2012-07-17 02:08:27
【问题描述】:

我目前有一个使用 TinyXML 解析的 XML 文件。我的 XML 文件的顶部如下所示:

<Classroom>12
    <ClassName>name</ClassName>
    ...
</Classroom>

我正在尝试访问 ClassName 中的文本。我目前使用这个遇到分段错误:

TiXmlDocument doc;
doc.LoadFile(file);
TiXmlHandle  handle(&doc);

TiXmlElement * child = handle.FirstChild().FirstChild().ToElement();
cout<<child->GetText();

我做错了什么?

谢谢!

【问题讨论】:

  • 备案,我的文件名是正确的。
  • 您是否检查过child 不为空?如果你这样做if(!child) std::cout &lt;&lt; "null pointer";会发生什么。
  • 返回 null。我还是不明白为什么。
  • 调用父元素就可以了。
  • @user1526283:调用父元素是否打印 12?

标签: c++ xml segmentation-fault tinyxml


【解决方案1】:
  1. 对 FirstChild() 的第一次调用返回一个 TiXmlElement,表示第一个 &lt;Classroom&gt;
  2. 对 FirstChild() 的第二次调用返回一个表示文本“12”的 TiXmlText
  3. TiXmlText 不会覆盖 ToElement() 函数,因此使用基类的 ToElement() 函数,该函数返回 NULL。

您可以将代码更改为以下内容:

TiXmlElement * child = handle.FirstChild("Classroom").FirstChild("ClassName").ToElement();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多