【问题标题】:Boost Write XML Wrong EncodingBoost 写入 XML 错误编码
【发布时间】:2018-07-03 08:52:38
【问题描述】:

我想将 boost wptree 写入文件。 在我的 Windows 上使用当前的std::locale,设置为C,输出 xml 文件的某些部分如下所示:

<demo>
    <demostring1>Abc</demostring1>
    <demostring2>abc&gt;def</demostring2>
</demo>

但我希望输出看起来像这样:

<demo>
    <demostring1>Abc</demostring1>
    <demostring2>abc>def</demostring2>
</demo>

这是将wptree 写入文件的代码:

boost::property_tree::xml_parser::write_xml(wstringToString(filename), mainTree,
    std::locale(),
    boost::property_tree::xml_writer_make_settings<std::wstring>(' ', 4));

我尝试通过以下方式更改语言环境

boost::property_tree::xml_parser::write_xml(wstringToString(filename), mainTree,
    std::locale("en_US.UTF-8"), // Give an Exception on runtime.
    boost::property_tree::xml_writer_make_settings<std::wstring>(' ', 4));

如何更改语言环境以便在 XML 文件中正确打印符号?

【问题讨论】:

  • 这与语言环境无关。
  • “我怎样才能使磁通电容器变得脆弱,以使符号像描述的那样被破坏”?语言环境与事物无关。

标签: c++ xml boost


【解决方案1】:

但我希望输出看起来像这样:

所以你想要有无效的 XML。 https://www.w3.org/TR/2008/REC-xml-20081126/#NT-CharData

除了 Boost 没有真正的 XML 库这一事实之外,您不会找到符合您描述的完整 XML 库。

如果您坚持,您将不得不手动连接字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多