Печать xml, сгенерированного деревом свойств boost

Я проверял 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. У нас есть какой-нибудь метод для его отображения?

5

Решение

Используйте следующую версию функции

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

13

Другие решения

Вы можете использовать любой вид выходного потока, поэтому std :: cout прекрасно подойдет и выведет ваш XML на текущую консоль.

0

По вопросам рекламы [email protected]