Я только начал использовать rapidXML, так как мне было рекомендовано. Сейчас перебрать несколько братьев и сестер я это сделать:C++ quickxml node_iterator пример?
//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();
}
в качестве основного теста и она отлично работает. В любом случае, я наткнулся на node_iterator, который, кажется, является дополнительным классом итератора, чтобы сделать это для меня. в любом случае, я не мог найти никакого примера о том, как его использовать, поэтому мне было интересно, может ли кто-нибудь показать мне :)
спасибо!
будьте осторожны с быстрым xml, так как он не делает никаких значимых проверок правильной формы ... –
Вышеприведенный пример - правильный способ сделать это. За исключением случаев, когда вы тестируете texNode-> next_sibling()! = 0 в начале цикла while, тогда, когда вы дойдете до последнего брата и установите texNode = texNode-> next_sibling(); в конце цикла while этот textNode не будет иметь next_sibling, поскольку он является последним. Поэтому цикл while никогда не обработает самого последнего брата из-за этой начальной проверки. – NSDestr0yer