I have the following XML file:
<xml version="1.0" encoding="utf-8"?>
<Data>
<Parameter1>1</Parameter1>
</Data>
I want to add a new node: Parameter2="2" to the Data node. This code doesn't work, saved file still contains only one parameter:
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);
If I add these two lines after dataTree.put, I get correct result:
tree.clear();
tree.add_child("Data", dataTree);
I don't like this solution, because it creates problems with more complicated tree structutes. Is it possible to update property tree without deleting/adding child nodes?