それでは、少し変更されたサンプルコードを見てみましょう。
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <boost/foreach.hpp>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
void load(const std::string &file_path)
{
using boost::property_tree::ptree;
ptree pt;
std::ifstream script;
script.open(file_path.c_str());
read_xml(script, pt);
BOOST_FOREACH(boost::property_tree::ptree::value_type &v,
config.get_child("config.servecies"))
{
std::cout
<< "First data: " << v.first.data() << std::endl
<< "Second data: " << v.second.data() << std::endl;
}
}
私はそのようなxmlでそれを試してみます:
<config>
<servecies>
<module>file</module>
<module>Admin</module>
<module>HR</module>
<notModule>MyNotModule</notModule>
</servecies>
</config>
印刷します:
最初のデータ:モジュール
2番目のデータ:ファイル
最初のデータ:モジュール
2番目のデータ:管理者
最初のデータ:モジュール
2番目のデータ:HR
最初のデータ:notModule
2番目のデータ:MyNotModule
しかし、私がそのようなjsonファイル(このWebツールを介してこのxmlから作成された)を試してみると:
{
"config": {
"name": "myconfig",
"servecies": {
"module": [
"file",
"Admin",
"HR"
],
"notModule": "MyNotModule"
}
}
}
印刷します:
最初のデータ:モジュール
2番目のデータ:
最初のデータ:notModule
2番目のデータ:MyNotModule
Boost property_treeがXMLを解析するのと同じ結果をJSONで生成するようにするにはどうすればよいですか?value_typeがある種の1次元配列であるかどうかを確認し、それを反復処理するにはどうすればよいですか?