@Kamikadze1024

Как модифицировать xml файл?

Добрый день, друзья! Как модифицировать xml файл?
У меня есть XML файл data.xml следующего содержания:
<?xml version="1.0" encoding="utf-8"?>
<Controls PageSize_Width="70">
  <PictureBox index="1" hashName="d6deadf9-d41a-4583-9d9b-95fae10baca0" Width="12,319" Height="12,319" Roate="0" />
  <PictureBox index="2" hashName="90df0e11-9dc3-4439-bb54-3e5a16da41a2" Width="12,319" Height="12,319" Roate="0"/>
</Controls>


Тэгов PictureBox может быть произвольное количество. Я пытаюсь изменить, значение pictureBox с индексом N
следующим C++ кодом, но в файл сохраняется неизмененная версия. Что я делаю не так?

#include <iostream>
#include <string>
#include <boost/property_tree/xml_parser.hpp>
#include <boost/property_tree/ptree.hpp>
#include <boost/foreach.hpp>
#include <boost/range/iterator_range.hpp>

//путь к файлу 
const std::string PRT_PATT_XML = "./data.xml";
const std::string MODIFE = "./modified.xml";

int main() {
    using boost::property_tree::ptree;
    ptree pt1;
    read_xml(PRT_PATT_XML, pt1);

    BOOST_FOREACH( const ptree::value_type & childTree, pt1.get_child("Controls") ) {
        std::string subtreeCaption = childTree.first;
        ptree sub_pt               = childTree.second;

        if (subtreeCaption == "PictureBox") {
            for(ptree::value_type &v : sub_pt.get_child("<xmlattr>")) {
                std::cout << "\t" << v.first << " = " << v.second.data() << std::endl;
                if(v.first == "hashName") {
                    v.second.put<std::string>((v.first), "ukrop");
                }
            }
        }
    }

    write_xml(MODIFE, pt1);

    return 0;
}
  • Вопрос задан
  • 85 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы