我正在使用 boost::property_tree
来读写 xml 配置文件。我想更改我的代码中某些标记的值并将它们写回文件,使用一些合理的 xml 格式(换行、缩进等)。
目前我正在使用
std::fstream fs("filename");
boost::property_tree::ptree pt;
bpt::xml_parser::read_xml(fs,pt);
// replace value
pt.erase("tagname");
pt.put("tagname",newval);
bpt::xml_parser::xml_writer_settings<char> xmlstyle(' ',4);
bpt::xml_parser::write_xml("filename",pt,std::locale(),xmlstyle);
但似乎每次删除标签时,它都会留下一个空行,经过一些迭代后,xml 变得不可读。有没有办法从属性树本身或使用 boost 从生成的 xml 文件中删除空行?
我知道还有其他方法可以通过再次读取和解析整个文件来删除换行符,但我希望有一种更方便的单行代码。
最佳答案
好吧,看起来答案已经在 Stack Overflow 上了,我只是没有找到它(帖子中没有提到换行符)
boost::property_tree XML pretty printing
解决方案是使用 boost::property_tree::xml_parser::trim_whitespace
来读取文件
关于c++ - Boost 属性树 (XML) 删除空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41138715/