rapidxml: как перебирать узлы? Не учитывает последний родственник

Используя 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?

Спасибо, ребята

Пит

]
7
задан Pete 2233 5 March 2011 в 10:52
поделиться