首页前端开发HTMLboost::xml

boost::xml

时间2024-01-25 12:27:30发布访客分类HTML浏览675
导读:收集整理的这篇文章主要介绍了html5教程-boost::xml_parser 读取xml,觉得挺不错的,现在分享给大家,也给大家做个参考。小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 boos...
收集整理的这篇文章主要介绍了html5教程-boost::xml_parser 读取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核实处理,我们将尽快回复您,谢谢合作!

ClassconstdivHTMLpost-format-galleryProp

若转载请注明出处: boost::xml
本文地址: https://pptw.com/jishu/586513.html
maven download jar Could not transfer artifact 自定义App.config NameValueSectionHandler的bug修复创建自己的NameValueCollectionSectionHandler

游客 回复需填写必要信息