x
-e
--k
-r
--d
-y
--z
Создаю я его так:
Код: Выделить всё
//foo.cpp
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
using namespace std;
namespace pt = boost::property_tree;
int main ()
{
boost::property_tree::ptree step;
step.put("x.e.k", "");
step.put("x.r.d", "");
step.put("x.y.z", "");
pt::write_xml ("dst.xml", step);
system ("xmllint -oldxml10 --shell dst.xml <<< du | head -n -1 | tail -n +2");
return 0;
}
Обратите внимание, для добавления узлов дерева я использую такой синтаксис:
https://www.boost.org/doc/libs/1_74_0/doc/html/boost/property_tree/basic_ptree.html#id-1_3_32_10_7_1_1_1_3_72-bb
То есть добавляем путь к узлу одной строчкой. Чтобы убрать этот путь, достаточо было бы такого же синтаксиса, типа:template<typename Type> self_type & put(const path_type &, const Type &);
Всё было бы решено. Но, понятное дело, ничего такого нет, а чтобы всех запутать для удаления узлов вот чё придумали:erase (const path_type &);
https://www.boost.org/doc/libs/1_74_0/doc/html/boost/property_tree/basic_ptree.html
То есть удаляем либо по итератору, либо по-какому мифическому key_type. Да, но я-то работаю правильно, с простыми и понятными значениями path_type, которым почему-то не нашлось места при удалении узлов.iterator erase(iterator);
iterator erase(iterator, iterator);
size_type erase(const key_type &);
------------------------------------------------------------------------
Также нельзя найти через path_type значение iterator узла или key_type узла, чтобы потом через них удалить узел. Нет таких методов. Не знаю вот, что делать. Спасибо, кто откликнется.