gpt4 book ai didi

c++ - 读出 XML 在 C++ 中提供意外输出

转载 作者:行者123 更新时间:2023-11-28 05:51:59 27 4
gpt4 key购买 nike

我有一个关于从 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

我检查节点“terrain”,但它仍然打印节点“skybox”和“tiger”。怎么办?

最佳答案

for 循环从节点“terrain”开始,然后继续到兄弟节点,即天空盒和老虎。

关于c++ - 读出 XML 在 C++ 中提供意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35046819/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com