打印 boost 属性树生成的 xml
Posted
技术标签:
【中文标题】打印 boost 属性树生成的 xml【英文标题】:Printing the xml generated by the boost property tree 【发布时间】:2013-03-11 05:51:51 【问题描述】:我测试了boost::property_tree
,结果很好:我可以加载 XML、提取元素、保存 XML 等。但是,是否可以生成 XML 并打印它?我不想保存它。
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.add("debug.modules.module", name);
write_xml(filename, pt);
这是我用来加载和保存 XML 的函数。我们有什么方法可以显示吗?
【问题讨论】:
例如写入流(std::stringstream)。 @ForEveR 你能举个小例子吗? 【参考方案1】:使用以下版本的函数
template<typename Ptree>
void write_xml
(
std::basic_ostream< typename Ptree::key_type::value_type > & stream,
const Ptree & pt,
const xml_writer_settings< typename Ptree::key_type::value_type > & settings =
xml_writer_settings< typename Ptree::key_type::value_type >()
);
http://www.boost.org/doc/libs/1_52_0/doc/html/boost/property_tree/xml_parser/write_xml_id1233444.html
write_xml(std::cout, pt);
在控制台输出
std::ostringstream oss;
write_xml(oss, pt);
用于stringstream
中的输出(您可以使用stringstream
的str
函数在控制台中输出stringstream
的内容)。
http://liveworkspace.org/code/4qV9om$4
【讨论】:
链接失效【参考方案2】:您可以使用任何类型的输出流,因此 std::cout 可以很好地将您的 XML 打印到当前控制台。
【讨论】:
以上是关于打印 boost 属性树生成的 xml的主要内容,如果未能解决你的问题,请参考以下文章