Mam następujący plik XML:Aktualizowanie pliku XML przy użyciu doładowania property_tree
<xml version="1.0" encoding="utf-8"?> <Data> <Parameter1>1</Parameter1> </Data>
chcę dodać nowy węzeł: parametr2 = „2” do węzła danych. Ten kod nie działa, zapisany plik zawiera jeszcze tylko jeden parametr:
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);
Jeśli dodać te dwie linie po dataTree.put, uzyskać poprawny wynik:
tree.clear(); tree.add_child("Data", dataTree);
mi się nie podoba to rozwiązanie, ponieważ stwarza problemy z bardziej skomplikowanymi strukturami drzewa. Czy można aktualizować drzewo właściwości bez usuwania/dodawania węzłów potomnych?
Dzięki! Bardzo pomocny, a teraz nie muszę pytać na bardzo nieprzyjaznym forum użytkowników Boost :) –