2014-01-15 94 views
2

我跟隨着Five Minute Tutorial,我得到了輸出(不出意料)的文件debug_settings_out.xmlboost :: property_tree xml漂亮的打印,格式

但我的問題是,它沒有很好的格式。它看起來像這樣:

<?xml version="1.0" encoding="utf-8"?> 
<debug><filename>debug.log</filename><level>2</level></debug> 

,我希望它看起來像這樣:

<?xml version="1.0" encoding="utf-8"?> 
<debug> 
    <filename>debug.log</filename> 
    <level>2</level> 
</debug> 

,因爲它也應該是人工編輯。 我該如何做到這一點?

我已經找到了settings我可以傳遞給解析器,但沒有一個給我想要的行爲。

回答

6

PropertyTree的文檔非常糟糕(我最近開始改進它)。你需要做的是將一個正確的xml_writer_settings對象傳遞給write_xml。

https://github.com/boostorg/property_tree/blob/master/include/boost/property_tree/detail/xml_parser_writer_settings.hpp

write_xml(filename, tree, std::locale(), 
      xml_writer_make_settings(' ', 4)); 
+0

謝謝。你能向我解釋,還是告訴我它在哪裏解釋,'('',4)'做了什麼?我還有什麼其他選擇? –

+1

第一個參數是縮進字符,另一個明智的選擇是'\ t'。其次是每次縮進重複該字符的頻率。沒有其他選擇。 –

+2

如果有其他人在這裏結束,並且無法使其工作:寫入流而不是文件時,沒有語言環境參數。即這有效:'write_xml(std :: cout,tree,xml_writer_make_settings('',4));' –