Используя rapidxml, я хочу пройтись по набору узлов и использую, как мне показалось, лучший способ сделать это (из верного стека overflow, у документа, похоже, нет примера итерации):
while (curNode->next_sibling() !=NULL ) {
string shiftLength = curNode->first_attribute("shiftLength")->value();
cout << "Shift Length " << "\t" << shiftLength << endl;
curNode = curNode->next_sibling();
}
К сожалению, на моем OSX 10.6 это без последнего узла-брата - я думаю, потому что в последней итерации цикла next_sibling вызывается дважды.Я могу добраться до этого последнего узла, если я напишу после цикла:
cout << " LAST IS: " << curNode->first_attribute("shiftLength")->value();
... но это хитроумно, и программа завершает работу в этот момент.
Первый вопрос: может ли этобыть уникальным недостатком моей установки (OSX 10.6) или я неправильно закодировал?
Второй вопрос: есть ли у кого-нибудь пример того, что, по их мнению, является правильным способом перебора неизвестного числа узлов XML с использованием rapidxml??
Спасибо, ребята
Пит