2012-07-17 72 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();