boost::xml
boost::XMl_parser 处理xML
---------debug_settings.xml--------
[html]
root>
strage name="asd" alias="13" classId="13.22">
r
id>
12/id>
name>
"jack"/name>
accout>
"0001"/accout>
/strage>
strage name="abbasd" alias="14" classId="14.22">
abb
id >
13/id>
name>
"toni"/name>
accout>
"0002"/accout>
/strage>
strage name="assasd" alias="15" classId="15.44">
ass
id >
14/id>
name>
"hate"/name>
accout>
"0003"/accout>
/strage>
/root>
--------main.cpp--------
[html]
#include boost/PRoPErty_tree/ptree.hpp>
#include boost/property_tree/xml_parser.hpp>
#include boost/algorIThm/string.hpp>
#include boost/foreach.hpp>
#include string>
#include set>
#include vector>
#include exception>
#include iostream>
using namespace std;
static const string str_node_name[] = {
"id","name","accout"}
;
struct xmlStageDetail
{
string id;
string name;
string accout;
}
;
int load(const char* filename,vectorxmlStageDetail>
*m_xml_detail)
{
xmlStageDetail xml_stage_detail;
using boost::property_tree::ptree;
ptree pt;
ptree root;
try
{
read_xml(filename, pt);
cout "获取数据" pt.data() endl;
root = pt.get_child("root");
}
catch (std::exception&
e)
{
std::cout "Error: " e.what() endl;
return -1;
}
cout "root的长度:" root.size() endl;
int ita = pt.getint>
("root.strage.id");
string cattr = pt.getstring>
("root.strage.xmlattr>
.name");
cout "root.strage.id:" ita "/troot.strage.xmlattr>
.name:" cattr endl;
for (ptree::iterator itr = root.begin();
itr!=root.end();
itr++)
{
ptree strage = itr->
second;
string ssv = strage.data();
string sattr = strage.getstring>
("xmlattr>
.name");
int iattr = strage.getint>
("xmlattr>
.alias");
float fattr = strage.getfloat>
("xmlattr>
.classId");
boost::trimstring>
(ssv);
// 去除首尾空格
cout ssv "[/tname:" sattr "/talias:" iattr "/tclassid:" fattr endl;
for (int i = 0;
i3;
i++)
{
ptree pt;
string str_value;
try
{
pt = strage.get_child(str_node_name[i]);
str_value = pt.data();
cout str_value endl;
}
catch (std::exception&
e)
{
cout str_value "解析错误:" e.what() endl;
return -1;
}
switch (i)
{
case 0:
xml_stage_detail.id = str_value;
break;
case 1:
xml_stage_detail.name = str_value;
break;
case 2:
xml_stage_detail.accout = str_value;
break;
}
}
m_xml_detail->
push_back(xml_stage_detail);
}
return 0;
}
int main()
{
vectorxmlStageDetail>
m_xml_detail;
try
{
load("debug_settings.xml",&
m_xml_detail);
std::cout "Success/n";
}
catch (std::exception &
e)
{
std::cout "Error: " e.what() endl;
return -1;
}
return 0;
}
运行结果如下:
boost::xml_parser 处理xml
---------debug_settings.xml--------
[html]
root>
strage name="asd" alias="13" classId="13.22">
r
id>
12/id>
name>
"jack"/name>
accout>
"0001"/accout>
/strage>
strage name="abbasd" alias="14" classId="14.22">
abb
id >
13/id>
name>
"toni"/name>
accout>
"0002"/accout>
/strage>
strage name="assasd" alias="15" classId="15.44">
ass
id >
14/id>
name>
"hate"/name>
accout>
"0003"/accout>
/strage>
/root>
--------main.cpp--------
[html]
#include boost/property_tree/ptree.hpp>
#include boost/property_tree/xml_parser.hpp>
#include boost/algorithm/string.hpp>
#include boost/foreach.hpp>
#include string>
#include set>
#include vector>
#include exception>
#include iostream>
using namespace std;
static const string str_node_name[] = {
"id","name","accout"}
;
struct xmlStageDetail
{
string id;
string name;
string accout;
}
;
int load(const char* filename,vectorxmlStageDetail>
*m_xml_detail)
{
xmlStageDetail xml_stage_detail;
using boost::property_tree::ptree;
ptree pt;
ptree root;
try
{
read_xml(filename, pt);
cout "获取数据" pt.data() endl;
root = pt.get_child("root");
}
catch (std::exception&
e)
{
std::cout "Error: " e.what() endl;
return -1;
}
cout "root的长度:" root.size() endl;
int ita = pt.getint>
("root.strage.id");
string cattr = pt.getstring>
("root.strage.xmlattr>
.name");
cout "root.strage.id:" ita "/troot.strage.xmlattr>
.name:" cattr endl;
for (ptree::iterator itr = root.begin();
itr!=root.end();
itr++)
{
ptree strage = itr->
second;
string ssv = strage.data();
string sattr = strage.getstring>
("xmlattr>
.name");
int iattr = strage.getint>
("xmlattr>
.alias");
float fattr = strage.getfloat>
("xmlattr>
.classId");
boost::trimstring>
(ssv);
// 去除首尾空格
cout ssv "[/tname:" sattr "/talias:" iattr "/tclassid:" fattr endl;
for (int i = 0;
i3;
i++)
{
ptree pt;
string str_value;
try
{
pt = strage.get_child(str_node_name[i]);
str_value = pt.data();
cout str_value endl;
}
catch (std::exception&
e)
{
cout str_value "解析错误:" e.what() endl;
return -1;
}
switch (i)
{
case 0:
xml_stage_detail.id = str_value;
break;
case 1:
xml_stage_detail.name = str_value;
break;
case 2:
xml_stage_detail.accout = str_value;
break;
}
}
m_xml_detail->
push_back(xml_stage_detail);
}
return 0;
}
int main()
{
vectorxmlStageDetail>
m_xml_detail;
try
{
load("debug_settings.xml",&
m_xml_detail);
std::cout "Success/n";
}
catch (std::exception &
e)
{
std::cout "Error: " e.what() endl;
return -1;
}
return 0;
}
运行结果如下:
觉得可用,就经常来吧! 欢迎评论哦! html5教程,巧夺天工,精雕玉琢。小宝典献丑了!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: boost::xml
本文地址: https://pptw.com/jishu/586513.html