热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

boost::xml_parser读取xml

boost::xml_parser处理xml---------debug_settings.xml--------[html]<root><stragename"asd"alias"13"classId"13.22">r<id&g

boost::xml_parser 处理xml
---------debug_settings.xml--------
[html
 
 
    12   
    "jack"   
    "0001" 
 
 
 abb 
    13   
    "toni"   
    "0002" 
 
 
 ass 
    14   
    "hate"   
    "0003" 
 
 
 

--------main.cpp--------
[html] 
#include  
 
#include  
 
#include  
 
#include  
 
#include  
 
#include  
 
#include  
 
#include  
 
#include  
 
  
 
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,vector*m_xml_detail) 
 

 
    xmlStageDetail xml_stage_detail; 
 
    using boost::property_tree::ptree; 
 
    ptree pt; 
 
    ptree root; 
 
    try 
 
    { 
 
        read_xml(filename, pt); 
 
        cout <<"获取数据" <  
        root = pt.get_child("root"); 
 
    } 
 
    catch (std::exception& e) 
 
    { 
 
        std::cout <<"Error: " <  
        return -1; 
 
    } 
 
  
 
    cout <<"root的长度:" <  
    int ita = pt.get("root.strage.id"); 
 
    string cattr = pt.get("root.strage..name"); 
 
    cout <<"root.strage.id:" <.name:" <  
  
 
    for (ptree::iterator itr = root.begin();itr!=root.end();itr++) 
 
    { 
 
        ptree strage = itr->second; 
 
        
 
        string ssv = strage.data(); 
 
        string sattr = strage.get(".name"); 
 
        int iattr = strage.get(".alias"); 
 
        float fattr = strage.get(".classId"); 
 
        boost::trim(ssv); // 去除首尾空格 
 
        cout <  
        for (int i = 0;i<3;i++) 
 
        { 
 
            ptree pt; 
 
            string str_value; 
 
            try 
 
            { 
 
                pt = strage.get_child(str_node_name[i]); 
 
                str_value = pt.data(); 
 
                cout <  
            } 
 
            catch (std::exception& e) 
 
            { 
 
                cout<  
                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() 
 

 
    vectorm_xml_detail; 
 
    try 
 
    { 
 
        load("debug_settings.xml",&m_xml_detail); 
 
        std::cout <<"Success\n"; 
 
    } 
 
    catch (std::exception &e) 
 
    { 
 
        std::cout <<"Error: " <  
        return -1; 
 
    } 
 
    return 0; 
 

运行结果如下:

 


推荐阅读
  • wxParse 0.3:微信小程序中的高级 HTML 和 Markdown 富文本解析器,全面支持多级嵌套与 Emoji 表情
    wxParse 0.3 是一款专为微信小程序设计的高级富文本解析器,支持 HTML 和 Markdown 转换为 WXML 可视化格式。该组件不仅能够处理复杂的多级嵌套结构,还全面支持 Emoji 表情,极大地提升了内容展示的多样性和用户体验。 ... [详细]
  • 本文详细解析了JSONP(JSON with Padding)的跨域机制及其工作原理。JSONP是一种通过动态创建``标签来实现跨域请求的技术,其核心在于利用了浏览器对``标签的宽松同源策略。文章不仅介绍了JSONP的产生背景,还深入探讨了其具体实现过程,包括如何构造请求、服务器端如何响应以及客户端如何处理返回的数据。此外,还分析了JSONP的优势和局限性,帮助读者全面理解这一技术在现代Web开发中的应用。 ... [详细]
  • 解决基于XML配置的MyBatis在Spring整合中出现“无效绑定语句(未找到):com.music.dao.MusicDao.findAll”问题的方法
    在将Spring与MyBatis进行整合时,作者遇到了“无效绑定语句(未找到):com.music.dao.MusicDao.findAll”的问题。该问题主要出现在使用XML文件配置DAO层的情况下,而注解方式配置则未出现类似问题。作者详细分析了两个配置文件之间的差异,并最终找到了解决方案。本文将详细介绍问题的原因及解决方法,帮助读者避免类似问题的发生。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 本文探讨了在Android应用中实现动态滚动文本显示控件的优化方法。通过详细分析焦点管理机制,特别是通过设置返回值为`true`来确保焦点不会被其他控件抢占,从而提升滚动文本的流畅性和用户体验。具体实现中,对`MarqueeText.java`进行了代码层面的优化,增强了控件的稳定性和兼容性。 ... [详细]
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • 深入解析Gradle中的Project核心组件
    在Gradle构建系统中,`Project` 是一个核心组件,扮演着至关重要的角色。通过使用 `./gradlew projects` 命令,可以清晰地列出当前项目结构中包含的所有子项目,这有助于开发者更好地理解和管理复杂的多模块项目。此外,`Project` 对象还提供了丰富的配置选项和生命周期管理功能,使得构建过程更加灵活高效。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • 在处理大规模并发请求时,传统的多线程或多进程模型往往无法有效解决性能瓶颈问题。尽管它们在处理小规模任务时能提升效率,但在高并发场景下,系统资源的过度消耗和上下文切换的开销会显著降低整体性能。相比之下,Python 的 `asyncio` 模块通过协程提供了一种轻量级且高效的并发解决方案。本文将深入解析 `asyncio` 模块的原理及其在实际应用中的优化技巧,帮助开发者更好地利用协程技术提升程序性能。 ... [详细]
  • 通过整合JavaFX与Swing,我们成功地将现有的Swing应用程序组件进行了现代化改造。此次升级不仅提升了用户界面的美观性和交互性,还确保了与原有Swing应用程序的无缝集成,为开发高质量的Java桌面应用提供了坚实的基础。 ... [详细]
  • Spring Security 认证模块的项目构建与初始化
    本文详细介绍了如何构建和初始化Spring Security认证模块的项目。首先,通过创建一个分布式Maven聚合工程,该工程包含四个模块,分别为core、browser(用于演示)、app等,以构成完整的SeehopeSecurity项目。在项目构建过程中,还涉及日志生成机制,确保能够输出关键信息,便于调试和监控。 ... [详细]
  • HTTP请求与响应机制:基础概览
    在Web浏览过程中,HTTP协议通过请求和响应报文实现客户端与服务器之间的通信。当用户访问一个网页时,浏览器会发送一个HTTP请求报文至服务器,服务器接收到请求后,会生成并返回一个HTTP响应报文。这两种报文均包含三个主要部分:起始行、头部字段和消息体,确保了数据的有效传输和解析。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • 在ASP.NET MVC项目中,通过实战解决了Ajax请求500错误及多表数据查询的问题。具体而言,将页面分为两个部分,用户点击右侧导航栏时,通过Ajax请求动态加载数据,并在右侧显示相应的页面内容。最初尝试使用Partial Action方法,但遇到了500错误。通过详细排查和调试,最终成功解决了这一问题,并实现了预期功能。此外,还优化了多表数据查询的性能,确保系统的高效运行。 ... [详细]
author-avatar
幸福的xinwangnanfei_736
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有