为什么这个循环只运行一次? noteDatabaseItem只接受一个节点并填充数据。 xml中有3个音符。
XML:
<?xml version="1.0" encoding="utf-8"?>
<noteCollection>
<note name="Test Note 1">This is test note 1 content!</note>
<note name="Test Note 2">This is test note 2 content!</note>
<note name="Test Note 3">This is test note 3 content!</note>
</noteCollection>
C ++:
std::vector<notekeeper::noteDatabaseItem> noteList;
TiXmlElement* noteCollection = xmlDoc->FirstChildElement("noteCollection");
TiXmlElement* node = noteCollection->FirstChildElement("note");
int itemCount = 0;
while (node != NULL) {
itemCount++;
noteList.resize(itemCount);
noteList.push_back(noteDatabaseItem(node));
node = noteCollection->NextSiblingElement("note");
}
答案 0 :(得分:9)
不应该是node = node->NextSiblingElement("note")
吗?
noteCollection
只有孩子,而不是兄弟姐妹,对吗?
答案 1 :(得分:3)
你的循环中出现了错误的元素。试试这个:
while (node != NULL) {
itemCount++;
noteList.push_back(noteDatabaseItem(node));
node = node->NextSiblingElement("note");
}
当前节点的下一个兄弟是你想要的。你试图获得父节点的下一个兄弟。
答案 2 :(得分:1)
node = noteCollection->NextSiblingElement("note");
意味着
node = node->NextSiblingElement("note");
愚蠢的错误。兄弟姐妹不是孩子。