TinyXML在元素上循环

TinyXML looping over elements

本文关键字:循环 元素 TinyXML      更新时间:2023-10-16

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

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");
}