141 T & current = tree(path);
143 std::list<typename T::path_elem_t> elemsToDelete;
145 for (
const auto & entry: current.getChildren()){
147 const T & child = entry.second;
150 typename tag_selector_t::const_iterator it = tagSelector.find(child->getNativeType());
151 if (it != tagSelector.end()){
156 if (it->second == 0){
158 elemsToDelete.push_back(entry.first);
164 if (child.getChildren().empty())
165 emptiness.add(CHILDREN);
167 if (child.data.getAttributes().empty())
168 emptiness.add(ATTRIBUTES);
170 if (child.data.getText().empty())
174 if (emptiness.isSet(it->second)){
175 elemsToDelete.push_back(entry.first);
177 else if ((it->second & XmlEmptiness::ANY) && emptiness.isAnySet(it->second)){
178 elemsToDelete.push_back(entry.first);
186 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:137