使用boost读取XML文件详细介绍
更新时间:2020年4月25日 17:33 点击:1508
boost读取XML文件
boost中提供了对配置文件读取的支持,它就是:property_tree。
basic_ptree 是property_tree的核心基础。其接口像std::list。可以执行很多基本的元素操作,比如使用begin()、end()等。
此外还加入了操作属性树的get()、get_child()、get_value()、data()等额外的操作。
basic_ptree有两个重要的内部定义self_type和value_type。self_type是basic_ptree模板实例化后自身的类型,它也是子节点的类型。value_type是节点的数据结构,它是一个std::pair,它含有属性名(first)和节点自身(second)。
通常不使用basic_ptree,而是使用预定义的typedef。ptree、wptree、iptree、wiptree。前缀i表示忽略大小写,前缀w表示支持宽字符。
例如:
config.xml
<?xml version="1.0" encoding="utf-8"?> <con> <id>1</id> <name>fansy</name> <urls> <url>http://blog.csdn.net//fansongy</url> <url>http://weibo.com//fansongy</url> </urls> </con>
我要读取它的数据:
#include <iostream> #include <boost/property_tree/ptree.hpp> #include <boost/property_tree/xml_parser.hpp> #include <boost/typeof/typeof.hpp> using namespace std; using namespace boost::property_tree; int main() { ptree pt; read_xml("conf.xml",pt); //读入一个xml文件 cout<<"ID is "<<pt.get<int>("con.id")<<endl; //读取节点中的信息 cout<<"Try Default"<<pt.get<int>("con.no_prop",100)<<endl; //如果取不到,则使用默认值 ptree child = pt.get_child("con"); //取一个子节点 cout<<"name is :"<<child.get<string>("name")<<endl; //对子节点操作,其实跟上面的操作一样 child = pt.get_child("con.urls"); for(BOOST_AUTO(pos,child.begin());pos != child.end();++pos) //boost中的auto { cout<<"\t"+pos->second.data()<<endl; } pt.put("con.name","Sword"); //更改某个键值 pt.add("con.urls.url",http://www.baidu.com); //增加某个键值 write_xml("conf.xml",pt); //写入XML getchar(); return 0; }
运行的显示为: ID is 1 Try Default100 name is :fansy http://blog.csdn.net//fansongy http://weibo.com//fansongy
config.xml为: <?xml version="1.0" encoding="utf-8"?> <con> <id>1</id> <name>Sword</name> <urls> <url>http://blog.csdn.net//fansongy</url> <url>http://weibo.com//fansongy</url> <url>http://www.baidu.com</url> </urls> </con>
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
相关文章
- 这篇文章主要介绍了C++ boost库的安装过程详解,文中通过示例代码和图片介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-28
- 这篇文章主要介绍了VS2019配置BOOST的方法(v1.70.0库),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-05
- 下面小编就为大家带来一篇快速解决boost库链接出错的问题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-04-25
- 下面小编就为大家带来一篇利用boost获取时间并格式化的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-04-25
- 这篇文章主要为大家详细介绍了VS2010 boost标准库开发环境的安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-04-25
- 这篇文章主要为大家详细介绍了visual studio 2015下boost库的配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-04-25
- 这篇文章主要为大家详细介绍了VS2013安装配置和使用Boost库的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-04-25
读取XML并绑定至RadioButtonList实现思路及演示动画
读取XML的文档,可以使用System.Data.DataSet类别中的ReadXml()方法,在aspx网页上拉一个RadioButtonList控件,用来显示XML的数据,接下来,用DataSet去读取刚才写好的获取XML文件的属性,即可完成...2021-09-22- 这篇文章主要介绍了使用boost读取XML文件详细介绍的相关资料,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了C++ boost 时间与日期处理详细介绍的相关资料,这里提供实例代码,及实现效果,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了C++之BOOST字符串查找的方法,实例演示了boost针对字符串的查找、判定及替换等操作,具有一定的实用价值,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了python机器学习库xgboost的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-22
- 这篇文章主要为大家详细介绍了人脸检测中AdaBoost算法的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-04-25
- variant类型在C++14并没有加入,若想在不支持C++17的编译器上使用variant类型,我们可以通过boost的variant类型,variant类型可以表示任意一种类型和any类型有些相似,但还是有些区别下面将浅谈variant的几种访问方法,感兴趣的朋友们下面来一起看看吧。...2020-04-25
- Boost是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称...2022-11-08
- 这篇文章介绍了C++中Boost的智能指针scoped_ptr,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2022-07-04
- Boost是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称...2022-11-08
- Boost是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称...2022-11-08
- Boost是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称...2022-11-09