Mag*_*llo 7 c++ xml boost boost-propertytree
通过在write_xml调用中用作第三个参数的xml_writer_settings,当函数保存xml时,是否可以省略xml声明?我的意思是,我不想让最初的"xml version ="blah"encoding ="blah blah"部分.我正在网上搜索,但我还是没有找到答案.怎么做?
是的,这是可能的,但您需要直接调用函数'write_xml_element'.以下是boost 1.49的示例:
using namespace boost::property_tree;
ptree pt;
...
write_xml_element(std::cout,ptree::key_type(),pt,-1,xml_writer_settings<ptree::key_type::value_type>());
Run Code Online (Sandbox Code Playgroud)
当然.您可以使用std :: ofstream或您想要的任何其他输出流替换标准输出.
不,这是不可能的。在这里查找 xml_writer_settings 的成员
而且,write_xml调用write_xml_internal的是(在 boost 1.52 中)
template<class Ptree>
void write_xml_internal(
std::basic_ostream<typename Ptree::key_type::value_type> &stream,
const Ptree &pt,
const std::string &filename,
const xml_writer_settings<typename Ptree::key_type::value_type> & settings)
{
typedef typename Ptree::key_type::value_type Ch;
typedef typename std::basic_string<Ch> Str;
stream << detail::widen<Ch>("<?xml version=\"1.0\" encoding=\"")
<< settings.encoding
<< detail::widen<Ch>("\"?>\n");
write_xml_element(stream, Str(), pt, -1, settings);
if (!stream)
BOOST_PROPERTY_TREE_THROW(xml_parser_error("write error", filename, 0));
}
Run Code Online (Sandbox Code Playgroud)