2012-08-27 136 views
7

使用TinyXML讀取xml文件。我想循環多個元素,但由於某種原因,它只能遍歷第一個元素。一個簡短的示例XML文件將是:TinyXML循環元素

<root> 
    <wave_manager name="WaveManager01"> 
    </wave_manager> 
    <wave_manager name="WaveManager02"> 
    </wave_manager> 
</root> 

代碼循環是:

TiXmlElement* root = _waveDoc.FirstChildElement("root"); 
for(TiXmlElement* e = root->FirstChildElement("wave_manager"); e != NULL; e = root->NextSiblingElement("wave_manager")) 
{ 
    string wmName = e->Attribute("name"); 

} 

所以這只是一次循環和wmName確實顯示WaveManager01,但隨後的for循環存在。

+1

呸,NVM。我看到我需要e-> NextSiblingElement()而不是root-> NextSiblingElement()。當我在發佈後立即找到答案時,討厭。 – user441521

+11

發佈該答案,而不是評論。 –

+0

@ user441521,請將其寫爲答案並將其標記爲已接受,以便此問題不再處於未答覆部分。謝謝 :) –

回答

2

您的for語句會將每個迭代中的e元素重置爲root。它應該去列表中的下一個元素 - e

下面是正確的代碼:

TiXmlElement* root = _waveDoc.FirstChildElement("root"); 

for(TiXmlElement* e = root->FirstChildElement("wave_manager"); e != NULL; e = e->NextSiblingElement("wave_manager")) 
{ 
    string wmName = e->Attribute("name"); 

}