3

このループが 1 回しか実行されないのはなぜですか? 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");
}
4

3 に答える 3

9

そうではないnode = node->NextSiblingElement("note")でしょうか?

noteCollection兄弟じゃなくて子供だけですよね?

于 2010-10-09T22:13:27.920 に答える
3

ループで間違った要素を取得しています。これを試して:

while (node != NULL) {
    itemCount++;
    noteList.push_back(noteDatabaseItem(node));
    node = node->NextSiblingElement("note");
}

現在のノードの次の兄弟は、必要なものです。親ノードの次の兄弟を取得しようとしました。

于 2010-10-09T22:15:59.427 に答える
1
node = noteCollection->NextSiblingElement("note");

であることが意図されています

node = node->NextSiblingElement("note");

愚かな間違い。子供ではなく兄弟。

于 2010-10-09T22:16:00.933 に答える