博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用boost 来进行xml解析
阅读量:4165 次
发布时间:2019-05-26

本文共 1734 字,大约阅读时间需要 5 分钟。

对xml的解析可能大家都很熟悉,网上流传比较多的代码一般都是对xml结构比较简单进行的操作,如果对结构像下面这样该怎么解析呢:
<root>
  <strage>  
    <id>"12"</id>  
    <name>"jack"</name>  
    <accout>"0001"</accout>
  </strage>
 <strage>  
    <id>"13"</id>  
    <name>"toni"</name>  
    <accout>"0002"</accout>
  </strage>
 <strage>  
    <id>"14"</id>  
    <name>"hate"</name>  
    <accout>"0003"</accout>
  </strage>
</root>
看到大家都在纠结这个解析器怎么写。我这里用boost提供的xml_parser来解决这个问题,效果非常好,既然已经提供了一个非常强大的工具为什么不去用呢?好吧如果你对boost不熟悉或者不知道怎么部署,请看我前面的一个博客,先上代码(在vs2008上调试通过,前提是已经配置了boost环境):
#include "stdafx.h"#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); root = pt.get_child("root"); } catch (std::exception& e) { return -1; } for (ptree::iterator itr = root.begin();itr!=root.end();itr++) { ptree strage = itr->second; 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(); } catch (std::exception& e) { 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(){ vector
m_xml_detail; try { load("debug_settings.xml",&m_xml_detail); std::cout << "Success\n"; } catch (std::exception &e) { std::cout << "Error: " << e.what() << "\n"; return -1; } return 0;}
转载:
你可能感兴趣的文章
python记录
查看>>
C++:冒泡排序的实现算法代码
查看>>
PCL是否安装成功测试(手把手超详细版)
查看>>
3、PCL 加载自己的点云数据集并显示出来
查看>>
PCL 三维点云轮廓提取
查看>>
C++:插入排序算法实现代码
查看>>
C++:快速排序法的代码实现
查看>>
4、ROS下播放激光点云bag数据并可视化
查看>>
5、激光雷达bag文件和转PCD文件
查看>>
2、关于点云格式的碎碎念
查看>>
ROS初始化时候sudo rosdep init rosdep update出现的各种问题亲测成功的解决办法(2020.12.29已解决!)
查看>>
6、ubuntu16.04 下 pcl的vogelgrid降采样处理 过程
查看>>
8、在ubuntu16.04 、ROS下使用 rviz 显示octomap_sever 构建的三维栅格地图
查看>>
如何在ubuntu16.04下运行第一个C++和python程序,以helloworld为例
查看>>
古月居 PyTorch入门:一起从零搭建神经网络一、PyTorch环境搭建
查看>>
古月居 PyTorch入门:一起从零搭建神经网络二、PyTorch基础知识
查看>>
古月居 PyTorch入门:一起从零搭建神经网络 三、快速搭建一个简单的神经网络
查看>>
用函数实现判断一个数是不是素数
查看>>
古月居 PyTorch入门:一起从零搭建神经网络 六、PyTorch车牌字符识别项目三
查看>>
古月居 PyTorch入门:一起从零搭建神经网络 七、PyTorch车牌字符识别项目四
查看>>