Используя Rapidxml, я хочу перебрать набор узлов, и я использую то, что я считаю лучшим способом сделать это (из надежного stackoverflow, документ, похоже, не есть пример итерации):
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?
Спасибо, ребята
Пит
]