How to parse more than 2 levels in XML with boost

Zyfert

New Member
I got this code form the boost library.http://www.boost.org/doc/libs/1_42_0/doc/html/boost_propertytree/tutorial.htmlThis is the xml file they have\[code\]<debug> <filename>debug.log</filename> <modules> <module>Finance</module> <module>Admin</module> <module>HR</module> </modules> <level>2</level></debug>\[/code\]The code to load these values and print them is\[code\]#include <boost/property_tree/ptree.hpp>#include <boost/property_tree/xml_parser.hpp>#include <boost/foreach.hpp>#include <string>#include <set>#include <exception>#include <iostream>struct debug_settings{ std::string m_file; // log filename int m_level; // debug level std::set<std::string> m_modules; // modules where logging is enabled void load(const std::string &filename); void save(const std::string &filename);};void debug_settings::load(const std::string &filename){ using boost::property_tree::ptree; ptree pt; read_xml(filename, pt); m_file = pt.get<std::string>("debug.filename"); m_level = pt.get("debug.level", 0); BOOST_FOREACH(ptree::value_type &v, pt.get_child("debug.modules")) m_modules.insert(v.second.data());}void debug_settings::save(const std::string &filename){ using boost::property_tree::ptree; ptree pt; pt.put("debug.filename", m_file); pt.put("debug.level", m_level); BOOST_FOREACH(const std::string &name, m_modules) pt.put("debug.modules.module", name,true); write_xml(filename, pt);}int main(){ try { debug_settings ds; ds.load("debug_settings.xml"); ds.save("debug_settings_out.xml"); std::cout << "Success\n"; } catch (std::exception &e) { std::cout << "Error: " << e.what() << "\n"; } return 0;}\[/code\]But it gives me an error /usr/include/boost/property_tree/detail/ptree_implementation.hpp:769: error: request for member
 
Back
Top