2012-07-17 71 views
2

我目前有一个XML文件,我正在使用TinyXML进行分析。我的XML文件的顶部看起来如此:使用TinyXML获得分段错误

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

我试图访问ClassName中的文本。我目前正在使用此分段错误:

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

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

我在做什么错?

谢谢!

+0

备案,我的文件名是正确的。 – 2012-07-17 02:09:29

+2

您是否检查过“child”不是null?如果你做了if(!child)std :: cout <<“空指针”;'。 – 2012-07-17 02:10:22

+0

它回来了。我仍然无法弄清楚为什么。 – 2012-07-17 02:17:27

回答

1
  1. 第一次调用则firstChild()返回一个表示到则firstChild(第一<Classroom>
  2. 第二呼叫)一个TiXmlElement返回TiXmlText表示文本 “12”
  3. TiXmlText不会覆盖ToElement()函数,因此使用基类的ToElement()函数,该函数返回NULL。

您可以更改您的代码如下:

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