2013-03-11 12 views
5

Przetestowałem boost::property_tree i było dobrze: mogę załadować XML, wyodrębnić elementy, zapisać XML, itp. Ale czy jest możliwe wygenerowanie XML i wydrukowanie go? Nie chcę tego zapisać.Drukowanie xml wygenerowane przez drzewo właściwości Przyspieszania

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); 

} 

Jest to funkcja, której używam do ładowania i zapisywania XML. Czy mamy jakąś metodę, aby go wyświetlić?

+0

zapisu w strumieniu (std :: stringstream) na przykład. – ForEveR

+0

@ForEveR Czy możesz dać mi mały przykład? – Kathick

Odpowiedz

13

używać następujących wersji funkcji

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); 

dla wyjścia w konsoli

std::ostringstream oss; 
write_xml(oss, pt); 

dla produkcji w stringstream (można wyjście stringstream zawartość w konsoli za pomocą str funkcja stringstream).

http://liveworkspace.org/code/4qV9om 4 $

+0

Link nie działa –

0

Możesz użyć dowolnego strumienia wyjściowego, więc std :: cout będzie dobrze i wydrukuje twój XML na aktualną konsolę.