当我运行它时,它会连续打印 x: 400 Next: y。为什么重复时不转到下一个兄弟姐妹?我正在遵循 RapidXML 手册中的一个示例,因此它应该可以工作。
数据.xml
<?xml version="1.0"?>
<dimensions>
    <x>400</x>
    <y>400</y>
    <z>1</z>
</dimensions>
地图.h
#ifndef MAP_H_
#define MAP_H_
class map{
  public:
    std::vector<int> get_xml();
};
#endif
地图.cpp
#include <vector>
#include <iostream>  
#include "../lib/rapidxml.hpp"
#include "../lib/rapidxml_print.hpp"
#include "../lib/rapidxml_utils.hpp"
using std::vector;
using std::cout;
using std::endl;
using namespace rapidxml;
vector<int> map::get_xml(){
    file<> xmlFile("res/data.xml");
    cout<<"XML loaded"<<endl;
    xml_document<> doc;
    xml_node<> *dims=doc.first_node("dimensions");
    vector<int> values;
    cout<<"Dimensions loaded"<<endl;
    for(xml_node<> *dim=dims->first_node();dim;dim->next_sibling()){
        cout<<dim->name()<<": "<<dim->value()<<endl
        <<"Next: "<<dim->next_sibling()->name()<<endl;
        values.push_back(atoi(dim->value()));
    }
    cout<<"All values loaded"<<endl;
    return values;
}
主文件
#include <vector>
#include "map.h"
map Map;
int main(int argc, char** argv){
    std::vector<int> dims=Map.get_xml();
    ...
}