130 T & current = tree(path);
132 std::list<typename T::path_elem_t> elemsToDelete;
134 for (
const auto & entry: current.getChildren()){
136 const T & child = entry.second;
139 typename tag_selector_t::const_iterator it = tagSelector.find(child->getNativeType());
140 if (it != tagSelector.end()){
145 if (it->second == 0){
147 elemsToDelete.push_back(entry.first);
153 if (child.getChildren().empty())
154 emptiness.add(CHILDREN);
156 if (child.data.getAttributes().empty())
157 emptiness.add(ATTRIBUTES);
159 if (child.data.getText().empty())
163 if (emptiness.isSet(it->second)){
164 elemsToDelete.push_back(entry.first);
166 else if ((it->second & XmlEmptiness::ANY) && emptiness.isAnySet(it->second)){
167 elemsToDelete.push_back(entry.first);
175 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:116
int visitPostfix(T &tree, const typename T::path_t &path) override
Tasks to be executed after traversing child nodes.
Definition TreeUtilsXML.h:127