提升属性树 毫无意义的错误路径
Boost property tree Bad path for nothing
我在使用这个库时遇到问题...我的代码工作正常,parsers/creator 也工作,但出现错误,我不知道为什么:
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
#include <boost/thread.hpp>
#include <string>
#include <exception>
#include <set>
#include <iostream>
#include "journal.h"
unsigned short port = 2013;
unsigned short maxConnec = 250;
unsigned short fPort() {return port;}
unsigned short fMaxConnec() {return maxConnec;}
bool load(const std::string &file)
{
using boost::property_tree::ptree;
ptree objectXML;
std::cout << "bbb";
read_xml(file, objectXML);
std::cout << "aaa";
if (file.length() == 0) // By the way, no way to do that better ? "if file doesn't exist..."
{
return 0;
}
else
{
port = objectXML.get<unsigned short>("configuration.server.port");
maxConnec = objectXML.get<unsigned short>("configuration.server.maxConnections");
return 1;
}
}
bool save(const std::string &file)
{
try
{
using boost::property_tree::ptree;
ptree objectXML;
objetXML.put("configuration.server.port", port);
objetXML.put("configuration.server.maxConnections", maxConnec);
write_xml(file, objectXML, std::locale(), boost::property_tree::xml_writer_make_settings<ptree::key_type>(' ', 4));
return 1;
}
catch (std::exception e)
{
return 0;
}
}
void generate()
{
std::string file = "configuration.xml";
try{
if (!load(fichier))
{
save(file);
}
}
catch (std::exception &e)
{
load(file);
}
}
路径不好,我完全不知道为什么,因为当我尝试读取数据时,我可以读取数据,即使我更改它,它也会获取 configuration.xml
中的数据...
ptree_bad_path
exception is raised from the throwing version of get
并表示 "configuration.server.port"
或 "configuration.server.maxConnections"
XML 元素 的路径不存在。
错误与 configuration.xml
文件路径无关。
所以您应该检查元素名称,或者对于可选元素,使用 default-value / optional-value version of get
.
我在使用这个库时遇到问题...我的代码工作正常,parsers/creator 也工作,但出现错误,我不知道为什么:
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
#include <boost/thread.hpp>
#include <string>
#include <exception>
#include <set>
#include <iostream>
#include "journal.h"
unsigned short port = 2013;
unsigned short maxConnec = 250;
unsigned short fPort() {return port;}
unsigned short fMaxConnec() {return maxConnec;}
bool load(const std::string &file)
{
using boost::property_tree::ptree;
ptree objectXML;
std::cout << "bbb";
read_xml(file, objectXML);
std::cout << "aaa";
if (file.length() == 0) // By the way, no way to do that better ? "if file doesn't exist..."
{
return 0;
}
else
{
port = objectXML.get<unsigned short>("configuration.server.port");
maxConnec = objectXML.get<unsigned short>("configuration.server.maxConnections");
return 1;
}
}
bool save(const std::string &file)
{
try
{
using boost::property_tree::ptree;
ptree objectXML;
objetXML.put("configuration.server.port", port);
objetXML.put("configuration.server.maxConnections", maxConnec);
write_xml(file, objectXML, std::locale(), boost::property_tree::xml_writer_make_settings<ptree::key_type>(' ', 4));
return 1;
}
catch (std::exception e)
{
return 0;
}
}
void generate()
{
std::string file = "configuration.xml";
try{
if (!load(fichier))
{
save(file);
}
}
catch (std::exception &e)
{
load(file);
}
}
路径不好,我完全不知道为什么,因为当我尝试读取数据时,我可以读取数据,即使我更改它,它也会获取 configuration.xml
中的数据...
ptree_bad_path
exception is raised from the throwing version of get
并表示 "configuration.server.port"
或 "configuration.server.maxConnections"
XML 元素 的路径不存在。
错误与 configuration.xml
文件路径无关。
所以您应该检查元素名称,或者对于可选元素,使用 default-value / optional-value version of get
.