142 T & current = tree(path);
144 std::list<typename T::path_elem_t> elemsToDelete;
146 for (
const auto & entry: current.getChildren()){
148 const T & child = entry.second;
151 typename tag_selector_t::const_iterator it = tagSelector.find(child->getNativeType());
152 if (it != tagSelector.end()){
157 if (it->second == 0){
159 elemsToDelete.push_back(entry.first);
165 if (child.getChildren().empty())
166 emptiness.add(CHILDREN);
168 if (child.data.getAttributes().empty())
169 emptiness.add(ATTRIBUTES);
171 if (child.data.getText().empty())
175 if (emptiness.isSet(it->second)){
176 elemsToDelete.push_back(entry.first);
178 else if ((it->second & XmlEmptiness::ANY) && emptiness.isAnySet(it->second)){
179 elemsToDelete.push_back(entry.first);
187 for (
const typename T::path_elem_t & elem: elemsToDelete){
int visitPrefix(T &tree, const typename T::path_t &path) override
Tasks to be executed before traversing child nodes.
Definition TreeUtilsXML.h:117
int visitPostfix(T &tree, const typename T::path_t &path) override
Tasks to be executed after traversing child nodes.
Definition TreeUtilsXML.h:138