利用boost 来进行xml解析
来源:互联网 发布:淘宝api接口 个人申请 编辑:程序博客网 时间:2024/06/01 09:31
对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环境):
看到大家都在纠结这个解析器怎么写。我这里用boost提供的xml_parser来解决这个问题,效果非常好,既然已经提供了一个非常强大的工具为什么不去用呢?好吧如果你对boost不熟悉或者不知道怎么部署,请看我前面的一个博客,先上代码(在vs2008上调试通过,前提是已经配置了boost环境):
#include "stdafx.h"#include <boost/property_tree/ptree.hpp>#include <boost/property_tree/xml_parser.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,vector<xmlStageDetail>*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<xmlStageDetail>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;}转载:点击打开链接
- 利用boost 来进行xml解析
- 利用boost 来进行xml解析
- 利用digester来解析XML文件
- 利用NSXMLParser来解析xml文件
- C++利用CMarkup来解析xml文件
- 使用Boost property tree来解析带attribute的xml
- 利用dom4j进行XML解析实例
- 利用GDataXML进行XML文件解析
- boost解析xml文件
- BOOST XML解析
- android利用pull技术来解析和生成xml文件
- 利用STAF调用STAX解析XML来执行脚本
- C++下利用CMarkup来解析xml文件46
- 使用DOM技术来对XML文档进行解析范例
- 采用DocumentBuilderFactory来进行XML文件的解析
- c++学习之利用tinyxml库进行对xml解析
- Android利用XmlPullParse对XML进行解析读取(一)
- 利用JAXP的SAX方式对xml进行解析
- 英尺到米的转换表--char3
- 移动平台安全相关书籍列表
- 重装系统时的硬盘格式化
- [数据结构]第七章-图(读书笔记2)
- Hibernate学习笔记
- 利用boost 来进行xml解析
- 百度地图API的那些事
- 使用boost库读取XML文件
- 仿函数,即函数对象,的一个简单例子
- 【五子棋AI】一、AI概述
- spring和resteasy集成,构建restful风格服务
- socket 请求接收完整的一个http响应(设置recv 接收超时选项SO_RCVTIMEO)
- 网站搬家后,UC通信失败解决方法
- list_entry