次の XML ファイルがあります。
<xml version="1.0" encoding="utf-8"?> <データ> <パラメータ1>1</パラメータ1> </データ>
新しいノード Parameter2="2" を Data ノードに追加したいと考えています。このコードは機能しません。保存されたファイルにはまだパラメーターが 1 つしか含まれていません。
boost::property_tree::ptree ツリー; boost::property_tree::ptree dataTree; read_xml("test.xml", ツリー); dataTree = tree.get_child("データ"); dataTree.put("パラメータ2", "2"); boost::property_tree::xml_writer_settings w(' ', 4); write_xml("test.xml", ツリー, std::locale(), w);
dataTree.put の後に次の 2 行を追加すると、正しい結果が得られます。
ツリー.クリア(); tree.add_child("データ", dataTree);
より複雑なツリー構造で問題が発生するため、このソリューションは好きではありません。子ノードを削除/追加せずにプロパティ ツリーを更新することはできますか?