9

使用 TinyXML 读取 xml 文件。我想循环多个元素,但由于某种原因,它只循环第一个元素。一个简短的示例 xml 文件将是:

<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循环存在。

4

1 回答 1

11

您的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");

}
于 2016-01-05T23:08:45.943 回答