Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ TinyXML在元素上循环_C++_Xml - Fatal编程技术网

C++ TinyXML在元素上循环

C++ TinyXML在元素上循环,c++,xml,C++,Xml,使用TinyXML读取xml文件。我想在多个元素上循环,但出于某种原因,它只在第一个元素上循环。一个简短的xml文件示例如下: <root> <wave_manager name="WaveManager01"> </wave_manager> <wave_manager name="WaveManager02"> </wave_manager> </root> 因此,这只循环一次,wmNa

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

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

}