rapidxml Kullanarak bir dizi düğümler arasında geçiş yapmak istiyorum ve bunu yapmak için en iyi yol olduğunu bulduğumu kullanıyorum (güvenilir stackoverflow'dan, dokümanın yineleme):rapidxml: düğümler boyunca yineleme nasıl? Son kardeşi bırakıyor
while (curNode->next_sibling() !=NULL) {
string shiftLength = curNode->first_attribute("shiftLength")->value();
cout << "Shift Length " << "\t" << shiftLength << endl;
curNode = curNode->next_sibling();
}
Maalesef, benim OSX 10.6 bu son eş düğüme dışarıda bırakarak olduğunu - döngünün son tekrarında, next_sibling iki kez denir çünkü sanırım.
cout << " LAST IS: " << curNode->first_attribute("shiftLength")->value();
... ama bu çok tehlikeli olduğunu ve program bu noktada çıkar: Ben yazarsam döngü sonra, bu son düğümde alabilirsiniz.
İlk soru: Bu, kurulumumun (OSX 10.6) benzersiz bir dayanağı olabilir mi, yoksa yanlış kodladım mı?
İkinci soru: Herkesin, hızlı bir şekilde XML kullanarak bilinmeyen sayıda XML düğümüyle yineleme yapmanın doğru yolu olduğuna dair bir örneği var mı?
Teşekkürler çocuklar
Pete
Döngüleri invaryantlar açısından düşünün. Sizinki NULL olmayan sonraki kardeşler ile tüm düğümleri yürütür. Bu son düğüm için geçerli değil. –