C++ TinyXML在元素上循环
使用TinyXML读取xml文件。我想在多个元素上循环,但出于某种原因,它只在第一个元素上循环。一个简短的xml文件示例如下:C++ TinyXML在元素上循环,c++,xml,C++,Xml,使用TinyXML读取xml文件。我想在多个元素上循环,但出于某种原因,它只在第一个元素上循环。一个简短的xml文件示例如下: <root> <wave_manager name="WaveManager01"> </wave_manager> <wave_manager name="WaveManager02"> </wave_manager> </root> 因此,这只循环一次,wmNa
<root>
<wave_manager name="WaveManager01">
</wave_manager>
<wave_manager name="WaveManager02">
</wave_manager>
</root>
因此,这只循环一次,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");
}
呸,内华达州。我知道我需要e->NextSiblingElement()而不是root->NextSiblingElement()。讨厌我在发布后立即找到答案。将其作为答案发布,而不是评论。@user441521,请将其作为答案写入,并将其标记为已接受,以便此问题不再位于“未回答”部分。谢谢:)
TiXmlElement* root = _waveDoc.FirstChildElement("root");
for(TiXmlElement* e = root->FirstChildElement("wave_manager"); e != NULL; e = e->NextSiblingElement("wave_manager"))
{
string wmName = e->Attribute("name");
}