rapidxml: ¿cómo iterar a través de los nodos? Deja fuera al último hermano

Utilizando rapidxml, deseo recorrer un conjunto de nodos, y estoy usando lo que me pareció la mejor manera de hacerlo (desde el confiable stackoverflow, el documento no parece tener un ejemplo de iteración):

while (curNode->next_sibling() !=NULL ) {
    string shiftLength = curNode->first_attribute("shiftLength")->value();
    cout << "Shift Length " << "\t" << shiftLength << endl;
    curNode = curNode->next_sibling();        
}

Desafortunadamente, en mi OSX 10.6 esta es dejando el último nodo hermano - Supongo que porque en la última iteración del ciclo, next_sibling se llama dos veces. Puedo llegar a este último nodo si escribo, después del ciclo:

cout << " LAST IS: " << curNode->first_attribute("shiftLength")->value();

... pero eso es dudoso, y el programa se cierra en ese punto.

Primera pregunta: ¿Podría ser una debilidad única de mi configuración (OSX 10.6) o he codificado mal?

Segunda pregunta: ¿Alguien tiene un ejemplo de lo que cree que es la forma correcta de iterar a través de un número desconocido de nodos XML utilizando rapidxml?

Gracias chico

Pete

Respuestas a la pregunta(3)

Su respuesta a la pregunta