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?