#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++;
}
}
boost库简单读写xml
最新推荐文章于 2024-05-01 15:40:09 发布
本文介绍使用Boost库进行XML文件的读取与写入操作。通过具体代码示例展示了如何将容器中的数据写入XML文件,并从XML文件中读取数据到容器的过程。涉及的主要步骤包括初始化数据结构、使用流将数据转换为字符串形式、添加数据节点到属性树、设置XML写入格式、执行写入操作以及从XML文件中解析并填充数据。
862

被折叠的 条评论
为什么被折叠?



