pugixml - iterating over specific nodes

1.5k views Asked by At

I have a xml document with a node which has children nodes but I want to iterate over specific nodes which names are stored in the array, for example:

const char* childrenNodes[]={"childNodeA", "childNodeC", "childNodeK"};

I can use next_sibling function which takes as an argument the element of the above array. Do you have any idea how to implement such loop using pugixml ?

1

There are 1 answers

0
acraig5075 On BEST ANSWER

There are two overrides of next_sibling

xml_node next_sibling() const;
xml_node next_sibling(const char_t* name) const;

You're concentrating on the second one. Rather use the first one that doesn't take a parameter, and then just check if the node name is in the array

pugi::xml_node node = root.first_child();
for (; node; node = node.next_sibling()
{
    if (std::find(std::begin(childrenNodes), std::end(childrenNodes), node.name()) != std::end(childrenNodes))
    {
        // ...
    }
}