У меня есть следующий XML-файл:
<xml version="1.0" encoding="utf-8"?>
<Data>
<Parameter1>1</Parameter1>
</Data>
Я хочу добавить новый узел: Parameter2 = "2" в узел данных. Этот код не работает, сохраненный файл все еще содержит только один параметр:
boost::property_tree::ptree tree;
boost::property_tree::ptree dataTree;
read_xml("test.xml", tree);
dataTree = tree.get_child("Data");
dataTree.put("Parameter2", "2");
boost::property_tree::xml_writer_settings w(' ', 4);
write_xml("test.xml", tree, std::locale(), w);
Если я добавлю эти две строки после dataTree.put, я получу правильный результат:
tree.clear();
tree.add_child("Data", dataTree);
Мне не нравится это решение, потому что оно создает проблемы с более сложными древовидными структурами. Можно ли обновить дерево свойств без удаления / добавления дочерних узлов?