Ho appena iniziato a utilizzare rapidXML poiché mi è stato consigliato. In questo momento per scorrere su più fratelli faccio questo:C++ rapidxml node_iterator esempio?
//get the first texture node
xml_node<>* texNode = rootNode->first_node("Texture");
if(texNode != 0){
string test = texNode->first_attribute("path")->value();
cout << test << endl;
}
//get all its siblings
while(texNode->next_sibling() != 0){
string test = texNode->first_attribute("path")->value();
cout << test << endl;
texNode = texNode->next_sibling();
}
come un test di base e funziona benissimo. Ad ogni modo, mi sono imbattuto in node_iterator che sembra essere una classe di iteratori in più per fare questo per me. comunque, non ho trovato nessun esempio su come usarlo, quindi mi chiedevo se qualcuno potesse mostrarmi :)
grazie!
Fare attenzione a rapidxml in quanto non esegue alcun controllo significativo della correttezza formale ... –
L'esempio precedente è il modo giusto per farlo. Tranne se provi per texNode-> next_sibling()! = 0 all'inizio del tuo ciclo while, quando arrivi all'ultima parentela e imposta texNode = texNode-> next_sibling(); alla fine del ciclo while, quel textNode non avrà un next_sibling poiché è l'ultimo. Quindi il ciclo while non elaborerà mai l'ultimo fratello a causa di quel controllo iniziale. – NSDestr0yer