我有一个关于从XML文件中读取的问题。
我的XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<level>
<terrain name="terrain" mesh="terrain.x" texture="terrain.bmp" position="011"></terrain>
<skybox name="skybox" mesh="skybox.x" left="left.jpg" right="right.jpg" bottom="bottom.jpg" top="top.jpg" back="back.jpg" front="front.jpg" position="111"></skybox>
<entity name="tiger" mesh="tiger.x" texture="tiger.bmp" position="000"></entity>
</level>
我的代码:
rapidxml::xml_document<> doc;
rapidxml::xml_node<>* root;
std::ifstream file("level\\noob.xml");
std::vector<char> buffer((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
buffer.push_back('\0');
doc.parse<0>(&buffer[0]);
root = doc.first_node("level");
for (rapidxml::xml_node<>* terrain = root->first_node("terrain"); terrain; terrain = terrain->next_sibling())
{
std::cout << terrain->first_attribute("name")->value() << std::endl;
}
所以我只想打印地形的名称。但运行时的结果是:
terrain
skybox
tiger
我检查节点&#34;地形&#34;但它仍会打印节点&#34; skybox&#34;和老虎&#34;。怎么样?
答案 0 :(得分:1)
for
循环从节点“terrain”开始,然后进入兄弟姐妹,即天空盒和老虎。