2012-08-27 7 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を示していたが、その後のループのために存在します。

+1

フン、NVM:

ここ正しいコードです。私はe-> NextSiblingElement()が必要であることを知っています - ルート - > NextSiblingElement()。私が投稿した直後に私が答えを見つけたら嫌い。 – user441521

+11

答えとして、コメントではありません。 –

+0

@ user441521の場合は、回答として記入し、受け入れ済みとマークして、この質問が未回答のセクションにないようにしてください。ありがとう:) –

答えて

2

forステートメントは、すべての反復でe要素をルートにリセットします。リストの次の要素(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"); 

} 
関連する問題