boost库的属性树读取xml文件_demo

boost库的属性树读取xml文件_demo

前提你得有自己的boost库

#include <QApplication>
#include <QDebug>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
#include <boost/foreach.hpp>
#include <string>
#include <set>
#include <exception>
#include <iostream>
namespace pt = boost::property_tree;

void debug_settings::load(const std::string &filename)
{

    pt::ptree tree;
    pt::read_xml(filename, tree);
    auto root=tree.get_child("school");

{
    //一,
    //该节点叫做tea,下面有个tea
    auto a=root.get_child("tea.tea").data();
    qDebug()<<"tea"<<QString::fromStdString(a);
}


{
     //二,
     //该节点叫做stu,下面有个stu1,stu2,stu3,演示遍历该节点
   auto stu=root.get_child("stu");
   for(auto it = stu.begin() ; it != stu.end() ; it++)
   {
       qDebug() << QString::fromStdString(it->first.data()) << QString::fromStdString(it->second.data());
   }

   //二,1
    //该节点叫做stu,下面有个stu1,stu2,stu3,演示读节点单个内容
   auto c=stu.get_child("stu1").data();
   qDebug()<<"stu1"<<QString::fromStdString(c);

   auto c22=stu.get_child("stu2").data();
   qDebug()<<"stu2"<<QString::fromStdString(c22);
}

}

void debug_settings::save(const std::string &filename)
{

    pt::ptree tree_root;

    pt::ptree tea;
    tea.add<int>("tea",66);
    tree_root.add_child("school.tea",tea);

    pt::ptree stu;
    stu.add<int>("stu1",111);
    stu.add<int>("stu2",111222);
    stu.add<int>("stu3",111222);
    stu.add<int>("stu4",111222);
    tree_root.add_child("school.stu",stu);

    pt::write_xml(filename, tree_root);
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    try
      {
          debug_settings ds;

          ds.save("debug_settings_out.xml");
          ds.load("debug_settings_out.xml");
          std::cout << "Success\n";
      }
      catch (std::exception &e)
      {
          std::cout << "Error: " << e.what() << "\n";
      }
    return a.exec();
}

在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值