Kein Zeilenende in der XML-Writer-Ausgabe des Boost-Eigenschaftenbaums

Kein Zeilenende in der XML-Writer-Ausgabe des Boost-Eigenschaftenbaums


Betrachten Sie den folgenden Code mit boost::property_tree:


#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
using namespace boost::property_tree;
int main() {
ptree model_tree;
model_tree.add("calibrated", "true");
model_tree.add("model.<xmlattr>.label", "label");
model_tree.add("model.activity.<xmlattr>.type", "fixed");
write_xml("test.xml", model_tree);
}

Durch Kompilieren und Ausführen des Programms erhalte ich folgende Ausgabe:


<?xml version="1.0" encoding="utf-8"?>
<calibrated>true</calibrated><model label="label"><activity type="fixed"/></model>

Was ich nicht wirklich erwartet hatte, da es keine neuen Zeilen oder Einrückungen gibt. Ich möchte stattdessen Folgendes erhalten:


<?xml version="1.0" encoding="utf-8"?>
<calibrated>true</calibrated>
<model label="label">
<activity type="fixed"/>
</model>

Ist es ein Fehler oder gibt es eine Option, um die letztere Ausgabe zu erhalten? Jede Hilfe wäre willkommen.


P.S.:Ich verwende Ubuntu 12.04 LTS mit gcc 4.6.3 und Boost 1.48.


Einige Code-Antworten


#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
using namespace boost::property_tree;
int main() {
ptree model_tree;
model_tree.add("calibrated", "true");
model_tree.add("model.<xmlattr>.label", "label");
model_tree.add("model.activity.<xmlattr>.type", "fixed");
write_xml("test.xml", model_tree);
}
<?xml version="1.0" encoding="utf-8"?>
<calibrated>true</calibrated><model label="label"><activity type="fixed"/></model>
<?xml version="1.0" encoding="utf-8"?>
<calibrated>true</calibrated>
<model label="label">
<activity type="fixed"/>
</model>
xml_writer_settings<char>
settings(' ', 4);
write_xml("test.xml", model_tree, std::locale(), settings);
boost::property_tree::xml_writer_settings<char>
settings('\t', 1);
write_xml("xmlfilePath.xml", pt, std::locale(), settings);
pt::write_xml( "test.xml",
model_tree,
std::locale(),
pt::xml_writer_make_settings<
std::string >( ' ', 4) );