boost库简单读写xml

来源:互联网 发布:淘宝联盟用了红包丢单 编辑:程序博客网 时间:2024/05/23 15:39
#include <boost/property_tree/ptree.hpp>  #include <boost/property_tree/xml_parser.hpp>  #include <boost/foreach.hpp>  #include <boost/algorithm/string.hpp>  #include <sstream>void saveToXml(){    using namespace boost::property_tree;    ptree pt;//把容器数据写入xml    for (int i = 0; i < s_ptsMap.size(); i++)    {        std::stringstream ss_i;        ss_i << "vce_map." <<"vec" << i;        for (int j = 0; j < s_ptsMap[i]->size(); j++)        {            std::stringstream ss_j;            ss_j << "." << "pt" << j;            auto STR = ss_i.str() + ss_j.str();            pt.add(STR + ".x", s_ptsMap[i]->at(j).x());            pt.add(STR + ".y", s_ptsMap[i]->at(j).y());            pt.add(STR + ".z", s_ptsMap[i]->at(j).z());        }    }//boost 库函数    boost::property_tree::xml_writer_settings<std::string> settings('\t', 1);    write_xml("res/tt.xml", pt, std::locale(), settings);}void readFromXml(const std::string& fileName){    using namespace boost::property_tree;    ptree pt, vec_list, point_list;    read_xml(fileName, pt);    vec_list = pt.get_child("vce_map");    int i = 0;    for (auto vec = vec_list.begin(); vec != vec_list.end(); vec++)      {        std::stringstream ss_i;        ss_i << "vce_map." << "vec" << i;        point_list = pt.get_child(ss_i.str());                int j = 0;        for (auto point = point_list.begin(); point != point_list.end(); point++)        {            std::stringstream ss_j;            ss_j << ".pt" << j;            auto STR = ss_i.str() + ss_j.str();            float x = pt.get<float>(STR + ".x");            float y = pt.get<float>(STR + ".y");            float z = pt.get<float>(STR + ".z");            s_ptsMap[i]->push_back(osg::Vec3(x, y, z));            j++;        }        i++;    }}
0 0